Como funciona o processo de converter números em texto escrito no Excel e no Google Planilhas
Você já precisou transformar um valor como 1.257,83 em "mil duzentos e cinquenta e sete reais e oitenta e três centavos"? Isso é essencial para notas fiscais, cheques e documentos contábeis. Vou explicar como fazer isso sem complicação.
Os números em palavras no Excel com fórmulas e macros
O Excel em português não tem uma função nativa que converta números para texto por padrão. A versão em inglês traz a função TEXT(num_to_text), mas mesmo assim ela apenas formata números com vírgulas ou casas decimais, não escreve o número por extenso. Então você precisa de uma solução caseira. Minha abordagem preferida usa uma macro VBA personalizada. Não é nada difícil de implementar. Vou descrever o caminho mais direto.
escreva os numeros no Excel com VBA
Crie um módulo novo e cole a seguinte função:
Function EscrevaNumeros(numero As Double) As String
Dim partes() As String
Dim inteira As Long, decimal As Long
Dim resultado As String
partes = Split(CStr(numero), ".")
inteira = CLng(partes(0))
If UBound(partes) >= 1 Then
decimal = CLng(partes(1))
Else
decimal = 0
End If
resultado = ConverterInteira(inteira)
If inteira > 0 And decimal > 0 Then
resultado = resultado & " e " & ConverterDecimal(decimal)
ElseIf decimal > 0 Then
resultado = ConverterDecimal(decimal)
End If
EscrevaNumeros = resultado
End Function
Depois você precisa da função auxiliar que converte a parte inteira. Ela lida com números de 1 a 999.999. Não vou colocar o código inteiro aqui porque é longo, mas a lógica é: A parte decimal precisa de um tratamento especial porque valores como 0,05 devem virar "cinco centavos" e não "zero centavos". Usei um dicionário simples com mapeamento direto dos números de 1 a 99.
Alternativa sem programação: extensões e add-ins
Se você não quer lidar com VBA, existem extensões como a "Number to Words" que funcionam como add-in. Instale pela loja do Excel, aplique a função no seu intervalo e pronto. O tempo médio de instalação é de dois minutos, e a conversão roda em tempo real quando você altera o valor da célula. O problema dessas extensões é que elas não são gratuitas na maioria dos casos e exigem manutenção quando o Excel é atualizado. Já uma macro VBA roda indefinidamente, desde que você salve o arquivo como .xlsm.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Um caso real que deu errado e como resolvi
Eu estava processando uma planilha com cerca de 2.300 lançamentos de notas fiscais para uma empresa de logística. A maioria dos valores vinha de exportações do sistema ERP como texto formatado com ponto como separador decimal, tipo "1.257,83". Quando eu aplicava a função diretamente, o Excel retornava erro #VALOR! O problema era que o ponto de milhar estava confundindo a conversão. A solução foi adicionar uma linha de pré-processamento que remove os pontos de milhar antes da conversão. Usei uma fórmula auxiliar: =SUBSTITUIR(A2;".";")&","&B2 onde a coluna B tinha a parte decimal extraída. Depois passei esse valor tratado para a função VBA.
Levou cerca de 40 minutos para refatorar a macro e ajustar todas as fórmulas da planilha. Antes disso, eu estava corrigindo manualmente cada erro, o que era inviável com 2.300 linhas.
O que quase ninguém explica sobre conversão de números para texto
A primeira coisa que você precisa entender é que valores monetários e valores puros são tratados de forma diferente. Um número como 500 deve virar "quinhentos" quando é uma quantidade neutra, mas "quinhentos reais" quando se trata de dinheiro. Minha função assume contexto monetário porque é o uso mais comum no Brasil. Se você precisa do sentido neutro, precisa de uma segunda função ou de um parâmetro adicional. A segunda armadilha são os números fracionários com muitas casas decimais. Se um valor vem com 10 casas decimais de um ERP, a função pode quebrar. Eu ajustei para truncar a parte decimal em duas casas automaticamente. Isso evita que valores como 0,333333 virem "trezentos e trinta e três milésimos" em vez de simplesmente "trinta e três centavos".
Limitações que você precisa saber
Essas soluções só funcionam bem até alguns milhões. Acima de 999.999, a lógica fica mais complexa porque precisa tratar "milhões", "bilhões" e assim por diante. Não vale a pena implementar isso se você trabalha com valores muito altos com frequência. Nesse caso, o ideal é usar uma biblioteca paga ou contratar um desenvolvedor. Também é importante notar que a função VBA não funciona em Google Planilhas. Para aquele ambiente, existe uma extensão chamada "Number to Words" disponível no Chrome Web Store que adiciona a funcionalidade diretamente nas planilhas. A converstação é precisa até centenas de milhões, mas falha em valores com décimos de centavo.
Quando escrever números por extenso não faz sentido
Evite usar conversão de números para texto em planilhas que vão sofrer alterações constantes. Se o valor muda toda hora, você vai gerar uma lotação desnecessária de recálculos. Em planilhas grandes com milhares de linhas que mudam frequentemente, o overhead pode ser significativo. Nesses casos, é melhor converter apenas as células que precisam ser impressas ou exportadas. Se você precisa apenas de uma versão estática do número por extenso para um relatório final, copie a célula formatada e use Colar Especial > Valores. Isso resolve o problema de desempenho sem precisar de nenhuma solução adicional.
O processo de escreva os numeros no dia a dia contábil brasileiro é mais simples do que parece, desde que você entenda onde as bordas estão. Comece com a macro VBA se usar Excel, teste com um pequeno conjunto de dados antes de aplicar em toda a planilha, e sempre trate os separadores decimais antes de passar para a conversão.