Todo tutorial sobre como obter taxas de câmbio ao vivo no Excel promete a mesma coisa e, sem avisar, entrega outra. Você segue os passos, um número aparece numa célula e parece estar ao vivo. Normalmente não está. É uma taxa de referência publicada uma vez por dia, ou uma cotação atrasada, ou uma tabela HTML raspada de um site que, na próxima atualização, vai devolver silenciosamente a moeda errada.
Este guia cobre os quatro métodos que realmente funcionam — o tipo de dados Moedas embutido no Excel, a função WEBSERVICE, o Power Query e uma LAMBDA reutilizável — e, mais importante, diz qual deles roda na sua versão do Excel, quão atualizado cada um realmente é e onde cada um produz números errados sem lançar nenhum erro.
Todas as fórmulas e todas as consultas abaixo foram escritas com base nos formatos de resposta documentados da API da Finexly e testadas quanto à correção antes da publicação.
Os quatro métodos, e qual deles você realmente pode usar
Os recursos de moeda do Excel dependem da versão de um jeito pouco comum. Metade dos tutoriais sobre o assunto recomenda um método que não existe na máquina do leitor. Comece por aqui.
| Método | Funciona em | Frequência real de atualização | Consegue enviar uma chave de API com segurança? | Melhor para |
|---|---|---|---|---|
| Tipo de dados Moedas | Microsoft 365 (Windows + Mac), Excel para a web. Não em 2016/2019/2021/2024 | Atrasado, sem intervalo publicado; atualização manual ou ao abrir | N/A — nenhuma API envolvida | Uma consulta rápida, um punhado de pares |
WEBSERVICE | Somente desktop no Windows: M365, 2024, 2021, 2019, 2016. Não em Mac, web ou mobile | O que a sua API devolver — mas a fórmula é volátil | ❌ Não. A chave precisa ir na URL | Uma ou duas células, protótipos rápidos |
| Power Query | Excel 2016+ no Windows. O M365 para Mac tem Power Query, mas sem conector da Web | O que a sua API devolver, a cada atualização | ✅ Sim, via Headers no M | Tabelas de taxas, conversão em massa, produção |
Wrapper LAMBDA | Excel 2021+/M365 no Windows (herda os limites do WEBSERVICE) | Igual ao WEBSERVICE | ❌ Não | Um =FXRATE() limpo para quem usa planilhas |
- Se você está num Mac, o conector da Web do Power Query não aparece entre as fontes disponíveis e o
WEBSERVICEsimplesmente não funciona. A Microsoft é explícita: oWEBSERVICE"pode aparecer na galeria de funções do Excel para Mac, mas depende de recursos do sistema operacional Windows, portanto não retornará resultados no Mac". Na prática, usuários de Mac no Microsoft 365 ficam limitados ao tipo de dados Moedas. - Se você usa uma licença perpétua do Excel 2019, 2021 ou 2024, o tipo de dados Moedas não está disponível para você — tipos de dados vinculados existem apenas no Microsoft 365 e no Excel para a web. Seu caminho é
WEBSERVICEou Power Query.
Método 1: o tipo de dados Moedas embutido no Excel
Esta é a opção sem código, e é com ela que a maioria dos artigos começa.
- Digite os pares de moedas em uma coluna usando códigos ISO 4217 separados por barra ou dois-pontos —
USD/EUR,GBP:JPY. (Se estiver em dúvida sobre qual código usar, nossa referência de ISO 4217 lista todos eles.) - Selecione as células e vá em Dados → Tipos de Dados → Moedas.
- Cada célula vira um registro vinculado com um pequeno ícone de moeda. Clique no ícone, ou use o botão Inserir Dados, e escolha Preço para despejar a taxa na célula ao lado.
- Atualize com Dados → Atualizar Tudo.
O que a Microsoft de fato promete
Esta é a parte que os tutoriais pulam. A própria documentação da Microsoft traz um aviso na página de Moedas: "As informações sobre moedas são fornecidas 'no estado em que se encontram' e podem estar atrasadas. Portanto, esses dados não devem ser usados para fins de negociação ou como recomendação." Não há nenhum intervalo de atualização publicado para pares de moedas. Os dados financeiros por trás vêm da LSEG Data & Analytics (antiga Refinitiv), expostos através do Bing.
Mais três restrições que importam se você está construindo algo de verdade:
- A disponibilidade depende do locatário. A Microsoft afirma que "os pares de moedas estão disponíveis apenas para contas do Microsoft 365 (clientes multilocatário mundiais)". Se a sua organização está numa nuvem soberana ou governamental, o botão Moedas ficará esmaecido e nenhuma quantidade de diagnóstico vai mudar isso.
- Não existe atualização no servidor. Tipos de dados vinculados só são atualizados enquanto a pasta de trabalho está aberta no Excel. A opção automática de cinco minutos existe, mas hoje está restrita ao programa Insiders, e a Microsoft observa que "alguns tipos de dados vinculados só podem ser atualizados manualmente".
- O par é opaco. Você recebe um número. Não dá para ver o carimbo de data/hora, a fonte nem o spread. Para faturamento ou relatórios você precisa de uma taxa auditável com uma data associada — o que é um problema bem diferente.
Use este método para dar uma olhada rápida numa taxa. Não o use como entrada de nada que você tenha que defender depois.
Método 2: WEBSERVICE mais uma API de moedas
WEBSERVICE(url) executa um HTTP GET e devolve o corpo da resposta como texto. Ele aceita exatamente um argumento: uma URL. Esse único fato determina todo o resto deste método.
Por que a sua chave de API precisa ir na URL
Como o WEBSERVICE não tem parâmetro de cabeçalhos, você não consegue enviar Authorization: Bearer …. Qualquer API usada a partir do WEBSERVICE precisa aceitar a chave como parâmetro de consulta. A Finexly suporta as duas formas:
# Recommended everywhere else — but impossible from WEBSERVICE
curl -H "Authorization: Bearer YOUR_API_KEY" \
"https://api.finexly.com/v1/rate?from=USD&to=EUR"
# The query-parameter form, which is what WEBSERVICE needs
https://api.finexly.com/v1/rate?from=USD&to=EUR&api_key=YOUR_API_KEYSeja honesto consigo mesmo sobre esse trade-off. Chaves em URLs acabam gravadas nos logs de acesso do servidor e podem vazar por cabeçalhos HTTP de referência, e a chave fica armazenada em texto puro dentro da pasta de trabalho — ou seja, qualquer pessoa para quem você mandar o arquivo tem a sua chave. Use uma chave separada, de cota baixa, para planilhas, e nunca distribua uma pasta de trabalho com WEBSERVICE contendo uma chave de produção.
Uma fórmula que funciona
Coloque a URL em A1 e a resposta bruta em A2:
A1: ="https://api.finexly.com/v1/rate?from="&B1&"&to="&C1&"&api_key="&$D$1
A2: =WEBSERVICE(A1)A2 agora contém o texto literal da resposta:
{"pair":"USD_EUR","rate":0.9215}Agora extraia o número. Quase todo tutorial concorrente faz isso por posição — INDEX(TEXTSPLIT(...), 1, 6) — o que quebra silenciosamente no instante em que a API adiciona um campo ou você troca de endpoint. Ancore no nome da chave em vez disso:
=LET(
raw, A2,
p, FIND("""rate"":", raw) + 7,
e, MIN(IFERROR(FIND(",", raw, p), 9999), IFERROR(FIND("}", raw, p), 9999)),
IFERROR(VALUE(MID(raw, p, e - p)), NA())
)Isso localiza o literal "rate":, avança seus sete caracteres e lê até o que vier primeiro — uma vírgula ou uma chave de fechamento. Devolve 0.9215 tanto da resposta de dois campos de /v1/rate quanto da resposta de quatro campos de /v1/convert-amount, e devolve #N/A em vez de um número errado se a chamada falhar. LET exige Excel 2021 ou Microsoft 365; no Excel 2016/2019 você pode escrever as mesmas chamadas FIND em linha, ao custo da legibilidade.
A armadilha da volatilidade
WEBSERVICE é uma função volátil. Ela é recalculada praticamente a cada alteração na planilha, não só quando você aperta F9. Monte um conversor de 40 linhas com um WEBSERVICE por linha e uma única tecla dispara 40 requisições HTTP.
Num plano gratuito de 1.000 requisições por mês, isso dá mais ou menos 25 teclas antes de você ser cortado. Duas defesas: mantenha o WEBSERVICE em uma única célula e referencie essa célula em todo o resto, ou mude o cálculo para manual (Fórmulas → Opções de Cálculo → Manual) enquanto constrói. Melhor ainda, use o Power Query, que não é volátil.
Método 3: Power Query — o que escala
O Power Query é o único método aqui capaz de enviar um cabeçalho Authorization, atualizar de forma agendada e lidar com uma tabela de cinquenta mil linhas sem derreter. É também o método que todo tutorial demonstra inteiramente por cliques na interface, de modo que o código M de verdade não aparece em lugar nenhum. Aqui está ele.
Abra Dados → Obter Dados → Iniciar Editor do Power Query, depois Nova Fonte → Consulta em Branco, depois Página Inicial → Editor Avançado, e cole:
let
ApiKey = "YOUR_API_KEY",
Pairs = "USD_EUR,USD_GBP,USD_JPY,USD_CHF",
Source = Json.Document(
Web.Contents(
"https://api.finexly.com",
[
RelativePath = "v1/convert",
Query = [ q = Pairs ],
Headers = [ #"Authorization" = "Bearer " & ApiKey ]
]
)
),
ToTable = Record.ToTable(Source),
Expanded = Table.ExpandRecordColumn(ToTable, "Value", {"rate"}, {"rate"}),
Split = Table.SplitColumn(
Expanded, "Name",
Splitter.SplitTextByDelimiter("_", QuoteStyle.None),
{"Base", "Quote"}
),
Typed = Table.TransformColumnTypes(
Split,
{{"Base", type text}, {"Quote", type text}, {"rate", type number}}
)
in
TypedChame-a de FxRates e carregue-a numa planilha. Você fica com uma tabela limpa de três colunas: Base, Quote, rate.
Três detalhes dessa consulta estão fazendo trabalho de verdade, e os três faltam em todos os passo a passo de interface:
Headersmantém a chave fora da URL. Essa é a maior vantagem de segurança que o Power Query tem sobre oWEBSERVICE.RelativePatheQuerysão separados da URL base de propósito. Se você concatenar a URL inteira como uma única string, o Power Query a classifica como fonte de dados dinâmica, que não pode ser atualizada sem supervisão no serviço do Power BI. Passar caminho e consulta separadamente mantém a fonte estática e atualizável.- Uma requisição, muitos pares.
/v1/convertdevolve todos os pares que você pedir em uma única chamada. Uma pasta de trabalho que atualiza de hora em hora ao longo de um expediente de oito horas, em 22 dias úteis, faz 176 requisições por mês desse jeito. Trinta chamadas separadas a/v1/ratena mesma frequência fariam 5.280 — cinco vezes a franquia mensal gratuita, para dados idênticos.
Uma função de taxa reutilizável
Para um único par sob demanda, encapsule tudo numa função M:
let
FxRate = (baseCode as text, quoteCode as text) as number =>
let
ApiKey = "YOUR_API_KEY",
Source = Json.Document(
Web.Contents(
"https://api.finexly.com",
[
RelativePath = "v1/rate",
Query = [ from = baseCode, to = quoteCode ],
Headers = [ #"Authorization" = "Bearer " & ApiKey ]
]
)
)
in
Source[rate]
in
FxRateChame-a de qualquer outra consulta como FxRate("USD", "EUR").
Convertendo 50.000 linhas sem fazer 50.000 buscas
Arrastar XLOOKUP por uma tabela grande é lento e frágil — e se a saída da consulta mudar de tamanho ao atualizar, referências de coluna inteira como F:F vão se desalinhar silenciosamente. Faça a junção dentro do Power Query:
- Carregue sua tabela de transações no Power Query.
- Página Inicial → Mesclar Consultas, casando sua coluna
CurrencycomFxRates[Quote]. - Expanda a coluna mesclada e mantenha
rate. - Adicionar Coluna → Coluna Personalizada com a conversão.
Isso é uma única junção sobre a tabela inteira, avaliada uma vez por atualização, sem nenhuma fórmula volátil na pasta de trabalho.
Método 4: uma LAMBDA =FXRATE() reutilizável
Se quem usa a pasta de trabalho são pessoas de planilha e não autores de consultas, esconda tudo isso atrás de uma única função. Vá em Fórmulas → Gerenciador de Nomes → Novo, dê o nome FXRATE e defina Refere-se a:
=LAMBDA(from_code, to_code, key,
LET(
url, "https://api.finexly.com/v1/rate?from=" & from_code &
"&to=" & to_code & "&api_key=" & key,
raw, WEBSERVICE(url),
p, FIND("""rate"":", raw) + 7,
e, MIN(IFERROR(FIND(",", raw, p), 9999), IFERROR(FIND("}", raw, p), 9999)),
IFERROR(VALUE(MID(raw, p, e - p)), NA())
)
)Agora qualquer pessoa pode escrever =FXRATE("USD","EUR",$D$1) e obter 0.9215. Guarde a chave uma única vez em D1, proteja essa célula, e o resto da pasta de trabalho nunca encosta nela. Note que isso herda todas as limitações do WEBSERVICE — só Windows, volátil, chave na URL — então é uma vitória de usabilidade, não de segurança nem de escala.
Cinco formas de as conversões de moeda no Excel darem errado em silêncio
Estes são defeitos de correção, não mensagens de erro. Nada fica vermelho. Os números simplesmente não são o que você imagina.
1. Multiplicar quando deveria dividir
Este é o erro mais comum nos tutoriais publicados de moedas no Excel, e vale ser preciso sobre o estrago. Uma taxa USD_EUR de 0.9215 converte USD em EUR. Para ir no sentido contrário — EUR em USD — você divide.
- Correto:
100 / 0.9215= 108,52 USD - Errado:
100 × 0.9215= 92,15 USD
O resultado erra pelo quadrado da taxa, 0.9215² = 0.8492 — uma subestimação de 15,1% que parece perfeitamente plausível num relatório. Escreva a direção nos cabeçalhos das colunas (USD→EUR rate, não Rate) e o erro fica difícil de cometer.
2. Fazer parse do JSON por posição
INDEX(TEXTSPLIT(response, ":", "}"), 1, 6) funciona até o exato momento em que a API adiciona um campo; a partir daí, o índice 6 devolve outro valor sem erro nenhum. Ancore no nome da chave, como na fórmula LET acima, ou use o Json.Document do Power Query, que faz o parse corretamente.
3. Arredondar tudo para duas casas decimais
O Excel usa duas casas decimais por padrão; o ISO 4217 não. JPY, KRW e VND não têm unidades menores — ¥250.75 não é um valor válido. BHD, KWD, OMR e TND têm três. Arredondar um total em JPY para duas casas e arredondar de novo depois é exatamente como conciliações acabam fechando com alguns pontos de diferença. Cobrimos o conjunto completo de regras no nosso guia sobre arredondamento de moedas e casas decimais.
4. Tratar a taxa média de mercado como a taxa que você vai pagar
Toda taxa deste artigo — e de qualquer API gratuita — é a taxa média de mercado: o ponto médio entre compra e venda. Não é o que o seu banco, a bandeira do cartão ou o seu processador de pagamentos oferece. Spreads reais vão de cerca de 0,5% a vários pontos percentuais. Se você está precificando produtos ou fazendo uma cotação para um cliente, adicione uma coluna explícita de markup em vez de fingir que a taxa média de mercado é a taxa de liquidação. Nosso texto sobre de onde as APIs de câmbio tiram seus dados explica o que esses feeds representam e o que não representam.
5. Deixar uma pasta de trabalho ao vivo reescrever os números do mês passado
Este é grave e quase nunca é mencionado. Se suas células de taxa atualizam ao vivo, então toda linha histórica da pasta de trabalho é reavaliada pela taxa de hoje cada vez que alguém abre o arquivo. A receita de março muda em abril. Sua conciliação nunca vai bater duas vezes.
Depois que uma transação aconteceu, a taxa dela é um fato sobre aquela data, não um valor ao vivo. Congele: converta uma vez, cole o resultado como valor ao lado da taxa e da data usadas, e mantenha a consulta ao vivo apenas para as linhas novas. É a mesma disciplina que sistemas de faturamento multimoeda e de gestão de despesas impõem no nível do banco de dados.
Bônus: taxas cruzadas
Se a sua API devolve tudo contra uma única base, converter EUR→GBP significa dividir uma taxa pela outra:
EUR→GBP = USD_GBP / USD_EUR = 0.7892 / 0.9215 = 0.856430
1,000 EUR = 856.43 GBPArredonde apenas na etapa final. Arredondar a taxa cruzada intermediária para quatro casas e só então multiplicar introduz um erro que se acumula ao longo de uma tabela grande. Há mais detalhes no nosso guia sobre taxas de câmbio cruzadas.
Atualização automática, limites de requisição e como ficar no plano gratuito
Para fazer uma tabela de taxas do Power Query se atualizar sozinha: clique com o botão direito na consulta em Consultas e Conexões → Propriedades e marque Atualizar dados ao abrir o arquivo e/ou Atualizar a cada N minutos.
Duas coisas sobre as quais ninguém avisa:
- Atualizar ao abrir dispara o aviso de segurança de dados externos do Excel. Os usuários vão ver uma barra amarela e, até clicarem em Habilitar, a atualização "automática" não faz nada. Adicionar a pasta em Central de Confiabilidade → Locais Confiáveis evita isso.
- Atualizar a cada 15 minutos contra uma taxa publicada uma vez por dia é puro desperdício. Ajuste o intervalo à frequência com que a sua fonte realmente muda. Para a maior parte do trabalho de faturamento e relatórios, uma vez ao abrir já basta.
Acompanhe seu consumo pelos cabeçalhos de resposta que a Finexly devolve — X-RateLimit-Limit, X-RateLimit-Used e X-RateLimit-Units. O plano gratuito permite 1.000 requisições por mês sem cartão de crédito, o que é confortável para uma pasta de trabalho que atualiza ao abrir e apertado para uma grade volátil de WEBSERVICE. Se você vive perto do teto, a correção quase sempre é agrupar as chamadas em /v1/convert em vez de migrar para um plano pago. Nosso guia de cache e tratamento de erros cobre os mesmos princípios fora do Excel.
Solução de problemas
| Sintoma | Causa | Correção |
|---|---|---|
#VALUE! vindo do WEBSERVICE | Protocolo não suportado, URL com mais de 2.048 caracteres, ou resposta acima do limite de 32.767 caracteres por célula | Use https, encurte a consulta, peça menos pares por chamada |
WEBSERVICE não devolve nada num Mac | Não é suportado fora do desktop Windows | Use o tipo de dados Moedas ou mova a pasta de trabalho para o Windows |
| Botão Moedas esmaecido | Você não está no Microsoft 365, ou a conta não é multilocatário | Verifique sua licença; o Excel perpétuo não tem tipos de dados vinculados |
#BUSY! ou #CONNECT! | Tipo de dados vinculado ainda resolvendo, ou sem conectividade | Espere e então Dados → Atualizar Tudo |
| Power Query: "fonte de dados dinâmica" ao atualizar | URL inteira concatenada como uma única string | Separe em RelativePath e Query como mostrado acima |
#N/A depois de atualizar | Código de moeda ausente na resposta, ou intervalos de busca deslocados | Envolva em IFNA e use referências estruturadas de tabela em vez de F:F |
401 UNAUTHORIZED | Chave ausente, malformada, ou enviada como cabeçalho onde se exige um parâmetro de consulta | Confirme qual estilo de autenticação o método suporta |
Perguntas frequentes
O Excel consegue obter taxas de câmbio em tempo real? Não de verdade em tempo real. O tipo de dados Moedas é explicitamente documentado como atrasado e sem intervalo publicado, e a maioria das APIs gratuitas publica uma vez por dia útil. O que dá para conseguir é uma taxa atual — uma taxa atualizada sob demanda a partir de uma fonte ao vivo, que é o que uma API de moedas oferece. Para FX genuíno a nível de tick, você precisa de um feed em streaming, não de uma planilha.
Como obtenho taxas de câmbio no Excel sem uma chave de API? O tipo de dados Moedas não precisa de chave, mas exige o Microsoft 365 e não dá carimbo de data/hora nem trilha de auditoria. Para qualquer coisa que você tenha que conciliar depois, uma API com chave é a melhor resposta — e um plano de API de moedas gratuita não custa nada.
Por que o WEBSERVICE não funciona no Excel para Mac?
A documentação da Microsoft afirma que o WEBSERVICE depende de recursos do sistema operacional Windows, então ele não retorna resultado no Mac mesmo aparecendo na galeria de funções. O mesmo vale para o FILTERXML. Usuários de Mac devem usar o Power Query sempre que possível, ou o tipo de dados Moedas.
Como obtenho taxas de câmbio históricas no Excel para uma data específica?
Monte uma tabela de taxas com uma linha por data, alimentada por uma fonte de taxas históricas, e então faça XLOOKUP contra ela com o modo de correspondência -1, para que fins de semana e feriados recuem para o último dia útil disponível. Nunca reavalie transações passadas pela taxa de hoje.
Posso usar o Power Query para converter uma tabela inteira de transações de uma vez? Sim, e você deveria. Mescle sua consulta de transações com a de taxas pelo código da moeda, expanda a coluna da taxa e adicione uma coluna personalizada com o valor convertido. Uma junção substitui dezenas de milhares de fórmulas voláteis e atualiza numa única passada.
Qual método devo escolher?
Um par, consulta ocasional: tipo de dados Moedas. Um protótipo no Windows: WEBSERVICE. Qualquer coisa da qual outras pessoas dependam: Power Query, sempre.
Pronto para colocar taxas atuais na sua planilha do jeito certo? Pegue sua chave gratuita da API da Finexly — sem cartão de crédito. Você recebe 1.000 requisições por mês em mais de 170 moedas, o parâmetro de consulta api_key que torna o WEBSERVICE possível, e autenticação por cabeçalho para o Power Query. Veja a documentação da API para a referência completa de endpoints, ou compare APIs de moedas se ainda estiver avaliando opções.
Explore More
Vlado Grigirov
Senior Currency Markets Analyst & Financial Strategist
Vlado Grigirov is a senior currency markets analyst and financial strategist with over 14 years of experience in foreign exchange markets, cross-border finance, and currency risk management. He has wo...
View full profile →