Como escrever número por extenso no Excel (valor em reais)
Atualizado em 10 de novembro de 2026 · Equipe Exercícios Excel
=Extenso(B2) escreve R$ 1.250,75 como "mil duzentos e cinquenta reais e setenta e cinco centavos".Pratique agora
Qual atalho abre o editor do VBA, onde a função Extenso é colada?
Por que o Excel não tem essa função
As funções do Excel são as mesmas em todos os idiomas, só com nomes traduzidos. Escrever números por extenso depende das regras de cada língua ("cento e um", "mil e cem", "um milhão de reais"), e a Microsoft nunca criou uma versão em português. Por isso, quem faz recibos, contratos e notas promissórias usa uma função própria.
Passo a passo: colar a função Extenso
- Abra a planilha onde vai usar o extenso
- Aperte Alt+F11: abre o editor do VBA
- No menu do editor, clique em Inserir > Módulo
- Cole o código abaixo na janela branca que abriu
- Feche o editor (o código fica salvo no arquivo)
- Na planilha, escreva
=Extenso(B2)numa célula
Function Ate999(ByVal n As Long) As String
Dim u, d, c, t As String, r As Long
u = Array("", "um", "dois", "três", "quatro", "cinco", "seis", "sete", "oito", "nove", "dez", "onze", "doze", "treze", "quatorze", "quinze", "dezesseis", "dezessete", "dezoito", "dezenove")
d = Array("", "", "vinte", "trinta", "quarenta", "cinquenta", "sessenta", "setenta", "oitenta", "noventa")
c = Array("", "cento", "duzentos", "trezentos", "quatrocentos", "quinhentos", "seiscentos", "setecentos", "oitocentos", "novecentos")
If n = 100 Then Ate999 = "cem": Exit Function
t = c(n \ 100)
r = n Mod 100
If r > 0 And r < 20 Then
If t <> "" Then t = t & " e "
t = t & u(r)
ElseIf r >= 20 Then
If t <> "" Then t = t & " e "
t = t & d(r \ 10)
If r Mod 10 > 0 Then t = t & " e " & u(r Mod 10)
End If
Ate999 = t
End Function
Function Extenso(ByVal valor As Double) As String
Dim centavos As Double, reais As Long, cent As Long
Dim mi As Long, mil As Long, un As Long, t As String
centavos = Int(valor * 100 + 0.5)
reais = Int(centavos / 100)
cent = centavos - reais * 100
mi = reais \ 1000000
mil = (reais \ 1000) Mod 1000
un = reais Mod 1000
If mi > 0 Then
t = Ate999(mi)
If mi = 1 Then t = t & " milhão" Else t = t & " milhões"
End If
If mil > 0 Then
If t <> "" Then
If un = 0 And (mil < 100 Or mil Mod 100 = 0) Then t = t & " e " Else t = t & " "
End If
If mil = 1 Then t = t & "mil" Else t = t & Ate999(mil) & " mil"
End If
If un > 0 Then
If t <> "" Then
If un < 100 Or un Mod 100 = 0 Then t = t & " e " Else t = t & " "
End If
t = t & Ate999(un)
End If
If reais > 0 Then
If reais Mod 1000000 = 0 Then t = t & " de"
If reais = 1 Then t = t & " real" Else t = t & " reais"
End If
If cent > 0 Then
If t <> "" Then t = t & " e "
t = t & Ate999(cent)
If cent = 1 Then t = t & " centavo" Else t = t & " centavos"
End If
If t = "" Then t = "zero reais"
Extenso = t
End FunctionA função aceita valores de R$ 0,01 até R$ 999.999.999,99 e arredonda para os centavos.
Salvar como .xlsm
Arquivos com código precisam ser salvos como Pasta de Trabalho Habilitada para Macro (.xlsm). Se você salvar como .xlsx, o Excel apaga o código e a fórmula passa a dar #NOME?. Na hora de salvar, escolha o tipo .xlsm na lista abaixo do nome do arquivo.
Ao abrir o arquivo de novo, o Excel pode mostrar uma faixa amarela com Habilitar Conteúdo. Clique nela para a função funcionar. Isso só aparece em arquivos com macros e é normal.
Exemplos do resultado
- R$ 1,00: um real
- R$ 21,00: vinte e um reais
- R$ 101,00: cento e um reais
- R$ 1.100,00: mil e cem reais
- R$ 1.250,75: mil duzentos e cinquenta reais e setenta e cinco centavos
- R$ 1.000.000,00: um milhão de reais
- R$ 0,50: cinquenta centavos
Usar no recibo
Junte o extenso com o texto do recibo usando &. O valor aparece em número e por extenso, como pede um recibo bem feito.
Fica assim: ="Recebi a quantia de "&TEXTO(B2;"R$ #.##0,00")&" ("&Extenso(B2)&")."
Se precisar da primeira letra maiúscula, use =PRI.MAIÚSCULA(Extenso(B2)), ou MAIÚSCULA para o texto todo.
Separar reais e centavos com fórmula
Mesmo sem macro, dá para separar as duas partes do valor. Isso ajuda a conferir o extenso ou a preencher formulários que pedem reais e centavos em campos diferentes.
=INT(B2)=ARRED((B2-INT(B2))*100;0)E se não puder usar macro?
Algumas empresas bloqueiam arquivos .xlsm. Nesse caso, há três caminhos:
- Escrever o extenso à mão só nos documentos finais
- Usar o Google Planilhas com um complemento de extenso, instalado em Extensões > Complementos
- Montar uma tabela com os extensos de 0 a 999 e juntar as partes com PROCV, o que dá trabalho, mas funciona sem macro
No Google Planilhas
O código VBA não roda no Google Planilhas. Lá, o caminho é um complemento ou um script em Apps Script (Extensões > Apps Script), que segue a mesma ideia: uma função própria que você chama na célula.
Erros comuns
#NOME?
A função não está no arquivo: ele foi salvo como .xlsx, ou o código foi colado em outra pasta de trabalho. Cole de novo e salve como .xlsm.
A função não calcula ao abrir o arquivo
As macros estão desabilitadas. Clique em Habilitar Conteúdo na faixa amarela.
Centavos errados
O valor tem mais de duas casas decimais escondidas. A função arredonda; confira o valor com ARRED(B2;2).
Perguntas frequentes
Existe função EXTENSO nativa no Excel?
Não. Nenhuma versão do Excel tem extenso em português pronto. É preciso colar uma função VBA ou usar um complemento.
A função funciona no Excel do Mac?
Sim. No Mac, o editor do VBA abre em Ferramentas > Macro > Editor do Visual Basic.
Funciona no Excel online ou no celular?
Não. O Excel na Web e o app do celular não rodam código VBA. Abra o arquivo no Excel do computador.
Como escrever por extenso sem "reais", só o número?
Use SUBSTITUIR no resultado: =SUBSTITUIR(Extenso(B2);" reais";""). Para valores de 1 real, troque também " real".
É seguro colar esse código?
Sim. Ele só lê o número e devolve um texto. Não abre arquivos, não acessa a internet e não muda nada na planilha.
Veja também
Aprenda Excel fazendo
Lições curtas, em português, com correção na hora.