Formula Excel 2016 Valor por Extenso

Infelizmente, a Excel 2016 não tem uma fórmula integrada para converter um valor numérico em seu equivalente por extenso (exemplo: "125" para "cento e vinte e cinco"). No entanto, é possível utilizar uma fórmula personalizada utilizando um recurso chamado "macro".

Para criar a macro, siga as seguintes etapas:

  1. Abra o Excel 2016 e pressione ALT + F11 para abrir o Editor do Visual Basic.

  2. Clique em "Inserir" no menu superior e selecione "Módulo".

  3. Na janela que aparecer, cole o seguinte código:

Function ValorPorExtenso(ByVal x As Currency) As String Dim n As Long Dim c As Integer Dim d As Integer Dim u As Integer Dim extenso As String If x < -999999999999.99 Or x > 999999999999.99 Then ValorPorExtenso = "" Exit Function End If x = Int(x * 100 + 0.5) If x < 0 Then extenso = "menos " x = -x End If n = Int(x / 100) x = x - n * 100 If n > 0 Then c = Int(n / 100) n = n - c * 100 d = Int(n / 10) u = n - d * 10 If c > 0 Then extenso = RetornaCentena(c) & " " If d > 0 Or u > 0 Then extenso = extenso & "e " If d = 0 Then extenso = extenso & RetornaUnidade(u) Else extenso = extenso & RetornaDezena(d, u) End If End If extenso = extenso & "real(is) " End If If x > 0 Then If n > 0 Then extenso = extenso & "e " Else extenso = extenso & "zero " End If d = Int(x / 10) u = x - d * 10 If d > 0 Or u > 0 Then If d = 1 Then extenso = extenso & RetornaOnzeADezenove(u) Else extenso = extenso & RetornaDezena(d, u) End If End If extenso = extenso & "centavo(s)" End If ValorPorExtenso = extenso End Function

Private Function RetornaUnidade(ByVal i As Integer) As String Select Case i Case 1: RetornaUnidade = "um" Case 2: RetornaUnidade = "dois" Case 3: RetornaUnidade = "três" Case 4: RetornaUnidade = "quatro" Case 5: RetornaUnidade = "cinco" Case 6: RetornaUnidade = "seis" Case 7: RetornaUnidade = "sete" Case 8: RetornaUnidade = "oito" Case 9: RetornaUnidade = "nove" End Select End Function

Private Function RetornaOnzeADezenove(ByVal i As Integer) As String Select Case i Case 0: RetornaOnzeADezenove = "onze" Case 1: RetornaOnzeADezenove = "doze" Case 2: RetornaOnzeADezenove = "treze" Case 3: RetornaOnzeADezenove = "quatorze" Case 4: RetornaOnzeADezenove = "quinze" Case 5: RetornaOnzeADezenove = "dezesseis" Case 6: RetornaOnzeADezenove = "dezessete" Case 7: RetornaOnzeADezenove = "dezoito" Case 8: RetornaOnzeADezenove = "dezenove" Case 9: RetornaOnzeADezenove = "nove" End Select End Function

Private Function RetornaDezena(ByVal i As Integer, ByVal u As Integer) As String Select Case i Case 2: RetornaDezena = "vinte" Case 3: RetornaDezena = "trinta" Case 4: RetornaDezena = "quarenta" Case 5: RetornaDezena = "cinquenta" Case 6: RetornaDezena = "sessenta" Case 7: RetornaDezena = "setenta" Case 8: RetornaDezena = "oitenta" Case 9: RetornaDezena = "noventa" End Select If i > 0 And u > 0 Then RetornaDezena = RetornaDezena & " e " & RetornaUnidade(u) End Function

Private Function RetornaCentena(ByVal i As Integer) As String Select Case i Case 1: RetornaCentena = "cem" Case 2: RetornaCentena = "duzentos" Case 3: RetornaCentena = "trezentos" Case 4: RetornaCentena = "quatrocentos" Case 5: RetornaCentena = "quinhentos" Case 6: RetornaCentena = "seiscentos" Case 7: RetornaCentena = "setecentos" Case 8: RetornaCentena = "oitocentos" Case 9: RetornaCentena = "novecentos" End Select End Function

  1. Feche o Editor do Visual Basic e volte para a sua planilha Excel.

  2. Na célula que deseja exibir o valor por extenso, digite a seguinte fórmula (supondo que o valor a ser convertido está na célula A1):

=ValorPorExtenso(A1)

  1. Pressione a tecla ENTER e o valor por extenso será exibido na célula.

Lembre-se de que a macro só funcionará se estiver habilitada as Macros do documento. As Macros podem representar riscos de segurança, portanto, é necessário ter cuidado ao habilitá-las.

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

Fórmulas que começam com:

Comentários