Como passar um número por extenso no Excel?

41 visualizações

Para exibir números por extenso no Excel, use a função SpellNumber. Em uma célula vazia, insira =SpellNumber(A1), substituindo A1 pela célula com o número a ser convertido. Alternativamente, use =SpellNumber(valor), inserindo o número diretamente. Pressione Enter.

Feedback 0 curtidas

Desvende o Segredo dos Números por Extenso no Excel: Uma Abordagem Completa e Exclusiva

Você já se viu precisando transformar valores numéricos em suas representações por extenso no Excel? Seja para preenchimento de cheques, elaboração de relatórios financeiros detalhados ou simplesmente para dar um toque de formalidade à sua planilha, essa habilidade pode ser incrivelmente útil.

Embora o Excel não ofereça uma função nativa para isso, não se preocupe! Apresentamos uma solução engenhosa e fácil de implementar que vai te permitir converter números em texto de maneira rápida e eficiente. Esqueça as complicações e prepare-se para dominar essa técnica valiosa!

O Desafio da Conversão Numérica no Excel

O Excel é uma ferramenta poderosa para cálculos e manipulação de dados, mas sua funcionalidade de conversão de números por extenso é limitada. A necessidade de escrever números em texto surge frequentemente em contextos como:

  • Preenchimento de Cheques: As instituições financeiras exigem a representação do valor tanto em números quanto por extenso.
  • Documentos Financeiros: Relatórios, contratos e outros documentos formais exigem precisão e clareza, incluindo a descrição dos valores por extenso.
  • Personalização de Planilhas: Adicionar um toque profissional e informativo às suas planilhas.

A Solução Elegante: A Função SpellNumber Personalizada

A chave para resolver este problema é criar uma função personalizada no Excel utilizando o Visual Basic for Applications (VBA). Essa função, que chamaremos de “SpellNumber”, fará a mágica da conversão.

Passo a Passo para Criar a Função SpellNumber

  1. Acesse o Editor VBA:

    • Abra o Excel e pressione Alt + F11 para abrir o editor VBA.
  2. Insira um Novo Módulo:

    • No editor VBA, vá em Inserir > Módulo.
  3. Cole o Código VBA:

    • Copie e cole o seguinte código no módulo:
Function SpellNumber(ByVal MyNumber) As String
    Dim DecimalPlace, Count
    Dim ReturnString As String

    ' Converte MyNumber para string.
    MyNumber = Trim(Str(MyNumber))

    ' Determina a posição da casa decimal.
    DecimalPlace = InStr(1, MyNumber, ".")

    ' Se houver casa decimal, remove-a.
    If DecimalPlace > 0 Then
        MyNumber = Left(MyNumber, DecimalPlace - 1)
    End If

    ' Inicializa as variáveis.
    Count = 1
    Do While MyNumber <> ""
        Select Case Count
            Case 1:
                Place = " "
            Case 2:
                Place = " mil "
            Case 3:
                Place = " milhão "
            Case 4:
                Place = " bilhão "
        End Select

        Num = Right(MyNumber, 3)
        MyNumber = Left(MyNumber, Len(MyNumber) - 3)

        If Val(Num) <> 0 Then
            ReturnString = TranslateThree(Num) & Place & ReturnString
        End If

        Count = Count + 1
    Loop

    ' Trata casos especiais
    If Trim(ReturnString) = "" Then
        ReturnString = "zero"
    End If

    SpellNumber = Trim(ReturnString)
End Function

Function TranslateThree(ByVal MyNumber) As String
    Dim ReturnString As String
    Dim Hundreds, Tens, Ones

    ' Extrai as centenas, dezenas e unidades.
    Hundreds = Int(MyNumber / 100)
    Tens = Int((MyNumber Mod 100) / 10)
    Ones = MyNumber Mod 10

    ' Traduz as centenas.
    If Hundreds > 0 Then
        ReturnString = TranslateHundreds(Hundreds) & " e "
    End If

    ' Traduz as dezenas e unidades.
    If Tens > 1 Then
        ReturnString = ReturnString & TranslateTens(Tens)
        If Ones > 0 Then
            ReturnString = ReturnString & " e " & TranslateOnes(Ones)
        End If
    Else
        If Tens = 1 Then
            ReturnString = ReturnString & TranslateTeens(Ones)
        Else
            If Ones > 0 Then
                ReturnString = ReturnString & TranslateOnes(Ones)
            End If
        End If
    End If

    TranslateThree = ReturnString

End Function

Function TranslateHundreds(ByVal Number) As String
    Select Case Number
        Case 1: TranslateHundreds = "cento"
        Case 2: TranslateHundreds = "duzentos"
        Case 3: TranslateHundreds = "trezentos"
        Case 4: TranslateHundreds = "quatrocentos"
        Case 5: TranslateHundreds = "quinhentos"
        Case 6: TranslateHundreds = "seiscentos"
        Case 7: TranslateHundreds = "setecentos"
        Case 8: TranslateHundreds = "oitocentos"
        Case 9: TranslateHundreds = "novecentos"
    End Select
End Function

Function TranslateTens(ByVal Number) As String
    Select Case Number
        Case 2: TranslateTens = "vinte"
        Case 3: TranslateTens = "trinta"
        Case 4: TranslateTens = "quarenta"
        Case 5: TranslateTens = "cinquenta"
        Case 6: TranslateTens = "sessenta"
        Case 7: TranslateTens = "setenta"
        Case 8: TranslateTens = "oitenta"
        Case 9: TranslateTens = "noventa"
    End Select
End Function

Function TranslateTeens(ByVal Number) As String
    Select Case Number
        Case 0: TranslateTeens = "dez"
        Case 1: TranslateTeens = "onze"
        Case 2: TranslateTeens = "doze"
        Case 3: TranslateTeens = "treze"
        Case 4: TranslateTeens = "quatorze"
        Case 5: TranslateTeens = "quinze"
        Case 6: TranslateTeens = "dezesseis"
        Case 7: TranslateTeens = "dezessete"
        Case 8: TranslateTeens = "dezoito"
        Case 9: TranslateTeens = "dezenove"
    End Select
End Function

Function TranslateOnes(ByVal Number) As String
    Select Case Number
        Case 1: TranslateOnes = "um"
        Case 2: TranslateOnes = "dois"
        Case 3: TranslateOnes = "três"
        Case 4: TranslateOnes = "quatro"
        Case 5: TranslateOnes = "cinco"
        Case 6: TranslateOnes = "seis"
        Case 7: TranslateOnes = "sete"
        Case 8: TranslateOnes = "oito"
        Case 9: TranslateOnes = "nove"
    End Select
End Function
  1. Salve a Planilha:
    • Feche o editor VBA e salve a planilha do Excel como um arquivo habilitado para macro (extensão .xlsm). É crucial salvar neste formato para que a função personalizada funcione corretamente.

Como Usar a Função SpellNumber na sua Planilha

Agora que a função está criada, utilizá-la é extremamente simples:

  1. Abra a Planilha:

    • Abra a planilha do Excel onde você salvou a função.
  2. Utilize a Função:

    • Em uma célula vazia, digite =SpellNumber(A1) (substituindo A1 pela célula que contém o número que você quer converter) ou =SpellNumber(1234.56) (substituindo 1234.56 pelo número que você quer converter diretamente).
  3. Pressione Enter:

    • O Excel exibirá o número por extenso na célula.

Exemplo Prático

Se a célula A1 contém o valor 1579.85, ao inserir a fórmula =SpellNumber(A1) em outra célula, o resultado será: mil quinhentos e setenta e nove.

Considerações Importantes

  • Formato da Célula: Certifique-se de que a célula que contém o número a ser convertido esteja formatada como “Número” para evitar erros.
  • Moeda: A função acima não formata o resultado para exibir a moeda (Reais, Dólares, etc.). Para adicionar a moeda, você pode concatenar o texto da moeda ao resultado da função. Por exemplo: ="Reais: " & SpellNumber(A1).
  • Vírgula vs. Ponto: A função considera o ponto (.) como separador decimal.
  • Limite de Valor: A função demonstrada suporta valores até bilhões. Para valores maiores, o código precisará ser adaptado.
  • Personalização: Sinta-se à vontade para modificar o código VBA para ajustar o formato da saída, adicionar suporte para outros idiomas ou lidar com casos específicos.

Conclusão

Com essa função personalizada, você desbloqueia um novo nível de automação e profissionalismo em suas planilhas do Excel. A capacidade de converter números por extenso é uma ferramenta poderosa que economiza tempo e garante precisão em diversas aplicações. Domine essa técnica e eleve suas habilidades no Excel!

#Converter Número #Excel #Número Extenso