Formula Excel 2007 Valor por Extenso

Não há uma função nativa no Excel 2007 para converter um valor em extenso, mas você pode usar uma fórmula personalizada.

  1. Pressione as teclas "Alt" e "F11" para abrir o Visual Basic Editor.

  2. Clique em "Inserir" e selecione "Módulo" para criar um novo módulo.

  3. 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

  1. Salve o módulo e volte para a planilha do Excel.

  2. 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.

  1. Pressione "Enter" para exibir o valor em extenso.

Veja também mais Fórmulas com a letra F

Fórmulas que começam com:

Comentários