Não há uma função nativa no Excel 2007 para converter um valor em extenso, mas você pode usar uma fórmula personalizada.
Pressione as teclas "Alt" e "F11" para abrir o Visual Basic Editor.
Clique em "Inserir" e selecione "Módulo" para criar um novo módulo.
Cole o código abaixo no módulo:
Function ValorPorExtenso(ByVal valor As Double) As String
Dim n As Double Dim u(9) As String, d(9) As String, m(4) As String Dim extenso As String Dim i As Integer
u(1) = "um": u(2) = "dois": u(3) = "três": u(4) = "quatro": u(5) = "cinco" u(6) = "seis": u(7) = "sete": u(8) = "oito": u(9) = "nove" d(1) = "dez": d(2) = "vinte": d(3) = "trinta": d(4) = "quarenta": d(5) = "cinquenta" d(6) = "sessenta": d(7) = "setenta": d(8) = "oitenta": d(9) = "noventa" m(1) = "cem": m(2) = "mil": m(3) = "milhões": m(4) = "bilhões"
If valor = 0 Then ValorPorExtenso = "zero" Exit Function End If
If valor >= 1000000000000# Then ValorPorExtenso = "Valor não suportado" Exit Function End If
If valor < 0 Then extenso = "menos " valor = -valor Else extenso = "" End If
n = Int(valor)
If n >= 100 Then Select Case Int(n / 100) Case 1 extenso = extenso & m(1) & " " Case 2 To 9 extenso = extenso & u(Int(n / 100)) & "cento " End Select n = n Mod 100 End If
If n >= 10 Then If n >= 20 Or n Mod 10 = 0 Then extenso = extenso & d(Int(n / 10)) & " " n = n Mod 10 Else Select Case n Case 11: extenso = extenso & "onze " Case 12: extenso = extenso & "doze " Case 13: extenso = extenso & "treze " Case 14: extenso = extenso & "quatorze " Case 15: extenso = extenso & "quinze " Case 16: extenso = extenso & "dezesseis " Case 17: extenso = extenso & "dezessete " Case 18: extenso = extenso & "dezoito " Case 19: extenso = extenso & "dezenove " End Select Exit Function End If End If
If n >= 1 And n <= 9 Then extenso = extenso & u(n) & " " End If
If valor - Int(valor) > 0 Then extenso = extenso & "e " Select Case Int(Round((valor - Int(valor)) * 100)) Case 1 To 9 extenso = extenso & "zero" & u(Int(Round((valor - Int(valor)) * 100))) & " " Case 10 To 19 Select Case Int(Round((valor - Int(valor)) * 100)) Case 10: extenso = extenso & "dez " Case 11: extenso = extenso & "onze " Case 12: extenso = extenso & "doze " Case 13: extenso = extenso & "treze " Case 14: extenso = extenso & "quatorze " Case 15: extenso = extenso & "quinze " Case 16: extenso = extenso & "dezesseis " Case 17: extenso = extenso & "dezessete " Case 18: extenso = extenso & "dezoito " Case 19: extenso = extenso & "dezenove " End Select Case 20 To 99 extenso = extenso & d(Int(Round((valor - Int(valor)) * 100 / 10))) & " " If Round((valor - Int(valor)) * 100 Mod 10) > 0 Then extenso = extenso & "e " & u(Int(Round((valor - Int(valor)) * 100 Mod 10))) & " " End If End Select End If
For i = 2 To 4 If valor >= 1000 ^ i Then extenso = extenso & ValorPorExtenso(Int(valor / 1000 ^ i)) & " " & m(i) & " " valor = valor Mod 1000 ^ i End If Next
extenso = Trim(extenso)
If extenso = "" Then extenso = "zero" End If
ValorPorExtenso = extenso
End Function
Salve o módulo e volte para a planilha do Excel.
Na célula onde deseja ver o valor em extenso, digite a seguinte fórmula:
=ValorPorExtenso(A1)
Substitua "A1" pelo endereço da célula que contém o valor que deseja converter.