Como escrever número por extenso no Excel (valor em reais)

Atualizado em 10 de novembro de 2026 · Equipe Exercícios Excel

O Excel não tem uma função pronta de extenso. A solução mais usada é colar uma função pequena em VBA (o código de macros do Excel). Depois disso, =Extenso(B2) escreve R$ 1.250,75 como "mil duzentos e cinquenta reais e setenta e cinco centavos".

Pratique agora

Exercício 1 de 4Correção na hora, sem cadastro

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 Function

A 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.

Começar grátis