Valor Por Extenso Excel - Fórmula Valor Por Extenso Excel 2016 - RETOEDU
Fórmula Valor Por Extenso Excel 2016 - RETOEDU

Converter números para extenso no Excel: o que funciona e o que não funciona

A maioria das pessoas tenta usar formatação personalizada de células com # ou @ e acaba frustrada porque isso só funciona para números inteiros simples. A função TEXTO do Excel não tem um código de formatação nativo que escreva números por extenso em português. O caminho real é usar uma função definida pelo usuário em VBA ou uma planilha de lookup.

valor por extenso excel com VBA

O método mais confiável que eu uso envolve criar uma função personalizada. Você abre o editor VBA com Alt+F11, insere um novo módulo e cola um código como este abaixo. Ele converte qualquer número inteiro de 0 a 999 trilhões para extenso em português brasileiro. Para números decimais, como valores monetários, você separa a parte inteira da decimal e trata cada uma individualmente. Eu costumo chamar a função duas vezes: uma para a parte inteira e outra para os centavos. O resultado final fica em uma única célula com uma fórmula simples.

Um problema que eu encontrei na prática é que a função padrão não lida bem com números negativos. Se você passar -1500, o resultado fica estranho ou dá erro. A correção é simples: adicione uma condição no início da função que verifica se o número é menor que zero, extrai o sinal e trata o resto como positivo. Isso economiza muito tempo de debugging depois. Outra limitação importante: funções VBA não atualizam automaticamente quando o valor da célula muda se a planilha estiver em modo de cálculo manual. Eu já perdi uma hora tentando entender por que uma célula mostrava o extenso errado até perceber que o cálculo estava definido como manual. Mude para cálculo automático ou force a atualização com F9 antes de confiar no resultado.

👉 Clique no botão abaixo para saber mais sobre o assunto!

alternativa sem VBA usando tabelas de consulta

Se você não pode ou não quer usar macros, existe uma abordagem baseada em tabelas auxiliares. Você cria uma tabela com os números de 1 a 999 e seus respectivos extensos. Depois usa PROCV ou ÍNDICE/CORRESP para montAR o resultado final. É mais verboso mas funciona em qualquer versão do Excel sem habilitar macros. O downside é que a manutenção é chata. Se você precisar de trilhões, a tabela cresce exponencialmente. E cada mudança de regra de ortografia, como a nova grafia de palavras compostas, exige atualização manual em todas as linhas.

extenso monetário para notas e cheques

Para documentos oficiais, o formato precisa incluir " reais ", " centavos ", e a concordância correta no plural. A função VBA precisa ser ajustada para isso. Eu monto uma versão que recebe o valor e já devolve o texto pronto para impressão, como "mil e duzentos e trinta e quatro reais e cinquenta e sete centavos". O detalhe é que centena inteira seguida de zeros não pede "e" antes de "reais". É um detalhe pequeno mas faz diferença em um cheque. Um edge case que vale a pena mencionar: números como 1.000,00. A função mal feita vai gerar "mil reais zero centavos". O correto é "mil reais". A solução é tratar explicitamente quando a parte decimal é zero e suprimir a menção aos centavos. Eu resolvi isso adicionando um parâmetro opcional queControla essa exibição.

onde baixar uma solução pronta

Existem templates disponíveis na internet com funções VBA já implementadas. O site da Microsoft oferece alguns exemplos na galeria de templates, e há também repositórios no GitHub com versões mantidas pela comunidade. Antes de copiar qualquer código alheio, leia ele com atenção. Muita gente copia funções que truncAM a parte decimal ou que não suportam valores acima de um milhão. Eu sugiro começar com uma versão simples, testAR com valores extremos como 0, 1, 999999, -500, 1500,50 e verificar se o resultado bate com o esperado. Se algum desses casos falhar, ajuste a função antes de aplicar em produção.