Torna al Blog

Come ottenere tassi di cambio in tempo reale in Excel: Power Query, WEBSERVICE e una API di valuta

V
Vlado Grigirov
August 18, 2026
Currency API Exchange Rates Excel Power Query Tutorial Finexly

Ogni tutorial su come ottenere tassi di cambio in tempo reale in Excel promette la stessa cosa e in silenzio ne consegna un'altra. Segui i passaggi, un numero compare in una cella e sembra aggiornato in diretta. Di solito non lo è. È un tasso di riferimento pubblicato una volta al giorno, o una quotazione ritardata, o una tabella HTML raschiata dal web che al prossimo aggiornamento restituirà silenziosamente la valuta sbagliata.

Questa guida copre i quattro metodi che funzionano davvero — il tipo di dati Valute integrato in Excel, la funzione WEBSERVICE, Power Query e una LAMBDA riutilizzabile — e, cosa più importante, ti dice quale gira nella tua versione di Excel, quanto sono davvero freschi i dati di ciascuno e dove ognuno produce numeri sbagliati senza generare alcun errore.

Ogni formula e ogni query qui sotto sono state scritte sulle strutture di risposta documentate della API Finexly e verificate prima della pubblicazione.

I quattro metodi, e quale puoi davvero usare

Le funzionalità valutarie di Excel dipendono dalla versione in modo insolito. Metà dei tutorial su questo argomento consiglia un metodo che sul computer del lettore non esiste. Parti da qui.

MetodoFunziona inFrequenza di aggiornamento realePuò inviare una chiave API in sicurezza?Ideale per
Tipo di dati ValuteMicrosoft 365 (Windows + Mac), Excel per il web. Non 2016/2019/2021/2024Ritardata, nessun intervallo pubblicato; aggiornamento manuale o all'aperturaN/D — nessuna API coinvoltaUna consultazione al volo, poche coppie
WEBSERVICESolo desktop Windows: M365, 2024, 2021, 2019, 2016. Non Mac, web o mobileQuella che restituisce la tua API — ma la formula è volatile❌ No. La chiave deve finire nell'URLUna o due celle, prototipi rapidi
Power QueryExcel 2016+ su Windows. M365 per Mac ha Power Query ma nessun connettore WebQuella che restituisce la tua API, a ogni aggiornamento✅ Sì, tramite Headers in MTabelle di tassi, conversioni massive, produzione
Wrapper LAMBDAExcel 2021+/M365 su Windows (eredita i limiti di WEBSERVICE)Come WEBSERVICE❌ NoUna =FXRATE() pulita per chi usa il foglio
Da quella tabella discendono subito due conseguenze:

  1. Se sei su Mac, il connettore Web di Power Query non compare tra le origini disponibili e WEBSERVICE non funziona affatto. Microsoft è esplicita: WEBSERVICE "può comparire nella raccolta di funzioni di Excel per Mac, ma si basa su funzionalità del sistema operativo Windows, quindi su Mac non restituirà alcun risultato". Gli utenti Mac con Microsoft 365 sono realisticamente limitati al tipo di dati Valute.
  2. Se usi una licenza perpetua di Excel 2019, 2021 o 2024, il tipo di dati Valute non è disponibile per te — i tipi di dati collegati esistono solo in Microsoft 365 ed Excel per il web. La tua strada è WEBSERVICE oppure Power Query.

Metodo 1: il tipo di dati Valute integrato in Excel

È l'opzione a codice zero, ed è quella con cui apre la maggior parte degli articoli.

  1. Scrivi le coppie di valute in una colonna usando i codici ISO 4217 separati da una barra o da due punti — USD/EUR, GBP:JPY. (Se non sai quale codice usare, il nostro riferimento ISO 4217 li elenca tutti.)
  2. Seleziona le celle, poi vai su Dati → Tipi di dati → Valute.
  3. Ogni cella diventa un record collegato con una piccola icona di valuta. Fai clic sull'icona, oppure usa il pulsante Inserisci dati, e scegli Prezzo per riversare il tasso nella cella adiacente.
  4. Aggiorna con Dati → Aggiorna tutti.

Che cosa promette davvero Microsoft

È la parte che i tutorial saltano. La documentazione di Microsoft riporta un avviso nella pagina dedicata alle Valute: "Le informazioni sulle valute sono fornite 'così come sono' e possono essere ritardate. Di conseguenza, questi dati non devono essere usati a scopo di trading o di consulenza." Non esiste alcun intervallo di aggiornamento pubblicato per le coppie di valute. I dati finanziari sottostanti provengono da LSEG Data & Analytics (già Refinitiv) e vengono resi disponibili tramite Bing.

Altri tre vincoli che contano se stai costruendo qualcosa di serio:

  • La disponibilità dipende dal tenant. Microsoft afferma che "le coppie di valute sono disponibili solo per gli account Microsoft 365 (client Worldwide Multi-Tenant)". Se la tua organizzazione è su un cloud sovrano o governativo, il pulsante Valute sarà disattivato e nessun tentativo di risoluzione dei problemi cambierà le cose.
  • Non esiste un aggiornamento lato server. I tipi di dati collegati si aggiornano solo mentre la cartella di lavoro è aperta in Excel. L'opzione automatica a cinque minuti esiste, ma al momento è riservata al programma Insider, e Microsoft precisa che "alcuni tipi di dati collegati possono essere aggiornati solo manualmente".
  • La coppia è una scatola chiusa. Ottieni un numero. Non puoi vedere il timestamp, la fonte o lo spread. Per la fatturazione o la reportistica ti serve un tasso verificabile con una data associata — che è un problema molto diverso.

Usa questo metodo per dare un'occhiata a un tasso. Non usarlo come input di qualcosa che dovrai difendere in seguito.

Metodo 2: WEBSERVICE più una API di cambio valuta

WEBSERVICE(url) esegue una GET HTTP e restituisce il corpo della risposta come testo. Accetta esattamente un argomento: un URL. Questo singolo dettaglio determina tutto il resto del metodo.

Perché la tua chiave API deve finire nell'URL

Poiché WEBSERVICE non ha un parametro per gli header, non puoi inviare Authorization: Bearer …. Qualsiasi API tu usi da WEBSERVICE deve accettare la chiave come parametro di query. Finexly supporta entrambe le modalità:

# 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_KEY

Sii onesto con te stesso sul compromesso. Le chiavi negli URL finiscono nei log di accesso dei server e possono trapelare attraverso gli header HTTP referrer, e la chiave viene salvata in chiaro dentro la cartella di lavoro — quindi chiunque riceva il file via email ha la tua chiave. Usa una chiave separata, con quota bassa, per i fogli di calcolo, e non distribuire mai una cartella di lavoro con WEBSERVICE che contenga una chiave di produzione.

Una formula funzionante

Metti l'URL in A1 e la risposta grezza in A2:

A1:  ="https://api.finexly.com/v1/rate?from="&B1&"&to="&C1&"&api_key="&$D$1
A2:  =WEBSERVICE(A1)

Ora A2 contiene il testo letterale della risposta:

{"pair":"USD_EUR","rate":0.9215}

Adesso estrai il numero. Quasi tutti i tutorali concorrenti lo fanno per posizione — INDEX(TEXTSPLIT(...), 1, 6) — e questo si rompe in silenzio nel momento in cui l'API aggiunge un campo o tu cambi endpoint. Ancorati invece al nome della chiave:

=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())
 )

Questa formula individua la stringa letterale "rate":, supera i suoi sette caratteri e legge fino a ciò che arriva prima: una virgola o una parentesi graffa di chiusura. Restituisce 0.9215 sia dalla risposta a due campi di /v1/rate sia da quella a quattro campi di /v1/convert-amount, e in caso di errore nella chiamata restituisce #N/A invece di un numero sbagliato. LET richiede Excel 2021 o Microsoft 365; su Excel 2016/2019 puoi scrivere le stesse chiamate FIND in linea, a scapito della leggibilità.

La trappola della volatilità

WEBSERVICE è una funzione volatile. Si ricalcola praticamente a ogni modifica del foglio, non solo quando premi F9. Costruisci un convertitore da 40 righe con una WEBSERVICE per riga e un singolo tasto premuto scatena 40 richieste HTTP.

Con un piano gratuito da 1.000 richieste al mese, sono circa 25 pressioni di tasto prima di essere bloccato. Due difese: tieni WEBSERVICE in una sola cella e fai riferimento a quella cella ovunque, oppure imposta il calcolo su manuale (Formule → Opzioni di calcolo → Manuale) mentre lavori. Meglio ancora, usa Power Query, che non è volatile.

Metodo 3: Power Query — quello che scala

Power Query è l'unico metodo qui che può inviare un header Authorization, aggiornarsi in base a una pianificazione e gestire una tabella da cinquantamila righe senza fondersi. È anche il metodo che ogni tutorial mostra esclusivamente a colpi di clic nell'interfaccia, per cui il codice M vero e proprio non si trova da nessuna parte. Eccolo.

Apri Dati → Recupera dati → Avvia editor di Power Query, poi Nuova origine → Query vuota, poi Home → Editor avanzato, e incolla:

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
    Typed

Chiamala FxRates e caricala in un foglio di lavoro. Ottieni una tabella pulita a tre colonne: Base, Quote, rate.

Tre dettagli di quella query stanno facendo un lavoro concreto, e tutti e tre mancano da qualsiasi procedura guidata basata sull'interfaccia:

  • Headers tiene la chiave fuori dall'URL. È il più grande vantaggio di sicurezza che Power Query ha su WEBSERVICE.
  • RelativePath e Query sono separati dall'URL di base deliberatamente. Se concateni l'intero URL in un'unica stringa, Power Query lo classifica come origine dati dinamica, che non può essere aggiornata senza supervisione nel servizio Power BI. Passare il percorso e la query separatamente mantiene l'origine statica e aggiornabile.
  • Una richiesta, molte coppie. /v1/convert restituisce in una sola chiamata tutte le coppie che chiedi. Una cartella di lavoro che si aggiorna ogni ora durante una giornata di otto ore su 22 giorni lavorativi genera così 176 richieste al mese. Trenta chiamate separate a /v1/rate con la stessa pianificazione ne genererebbero 5.280 — cinque volte il limite mensile gratuito, per dati identici.

Una funzione di cambio riutilizzabile

Per una singola coppia su richiesta, incapsula il tutto in una funzione 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
    FxRate

Richiamala da qualsiasi altra query con FxRate("USD", "EUR").

Convertire 50.000 righe senza 50.000 ricerche

Trascinare XLOOKUP lungo una tabella grande è lento e fragile — e se l'output della query cambia dimensione all'aggiornamento, i riferimenti a colonna intera come F:F si disallineeranno in silenzio. Fai invece il join dentro Power Query:

  1. Carica la tabella delle transazioni in Power Query.
  2. Home → Merge di query, facendo corrispondere la colonna Currency a FxRates[Quote].
  3. Espandi la colonna unita e mantieni rate.
  4. Aggiungi colonna → Colonna personalizzata con la conversione.

È un solo join sull'intera tabella, valutato una volta per aggiornamento, senza alcuna formula volatile nella cartella di lavoro.

Metodo 4: una =FXRATE() LAMBDA riutilizzabile

Se le persone che useranno la cartella di lavoro sono utenti di fogli di calcolo e non autori di query, nascondi tutto quanto sopra dietro un'unica funzione. Vai su Formule → Gestione nomi → Nuovo, chiamala FXRATE e imposta Si riferisce 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())
   )
 )

Ora chiunque può scrivere =FXRATE("USD","EUR",$D$1) e ottenere 0.9215. Conserva la chiave una sola volta in D1, proteggi quella cella, e il resto della cartella di lavoro non la tocca mai. Tieni presente che questo eredita tutti i limiti di WEBSERVICE — solo Windows, volatile, chiave nell'URL — quindi è un guadagno in usabilità, non in sicurezza o scalabilità.

Cinque modi in cui le conversioni di valuta in Excel sbagliano in silenzio

Questi sono errori di correttezza, non messaggi di errore. Niente diventa rosso. I numeri semplicemente non sono quelli che pensi.

1. Moltiplicare quando dovresti dividere

È l'errore più comune nei tutorial di Excel sulle valute, e vale la pena essere precisi sui danni. Un tasso USD_EUR di 0.9215 converte USD in EUR. Per andare nella direzione opposta — da EUR a USD — devi dividere.

  • Corretto: 100 / 0.9215 = 108,52 USD
  • Sbagliato: 100 × 0.9215 = 92,15 USD

Il risultato sbaglia di un fattore pari al quadrato del tasso, 0.9215² = 0.8492 — una sottostima del 15,1% che su un report sembra del tutto plausibile. Scrivi la direzione nelle intestazioni di colonna (tasso USD→EUR, non Tasso) e diventa difficile commettere l'errore.

2. Analizzare il JSON per posizione

INDEX(TEXTSPLIT(response, ":", "}"), 1, 6) funziona fino all'esatto momento in cui l'API aggiunge un campo: a quel punto l'indice 6 restituisce un valore diverso senza alcun errore. Ancorati al nome della chiave, come nella formula LET qui sopra, oppure usa Json.Document di Power Query, che effettua un parsing vero e proprio.

3. Arrotondare tutto a due decimali

Excel usa due decimali per impostazione predefinita; ISO 4217 no. JPY, KRW e VND hanno zero unità minori¥250.75 non è un importo valido. BHD, KWD, OMR e TND ne hanno tre. Arrotondare un totale in JPY a due decimali e poi riarrotondarlo a valle è il modo in cui le riconciliazioni finiscono per sballare di qualche unità. Trovi tutte le regole nella nostra guida su arrotondamenti e decimali delle valute.

4. Trattare un tasso mid-market come il tasso che ti verrà applicato

Ogni tasso in questo articolo — e in ogni API gratuita — è il tasso mid-market: il punto medio tra denaro e lettera. Non è quello che ti danno la tua banca, il circuito della carta o il processore di pagamento. Gli spread reali vanno da circa lo 0,5% a diversi punti percentuali. Se stai definendo prezzi o facendo un preventivo a un cliente, aggiungi una colonna di ricarico esplicita invece di far finta che il tasso mid-market sia il tasso di regolamento. Il nostro approfondimento su da dove prendono i dati le API di cambio spiega che cosa questi feed rappresentano e che cosa no.

5. Lasciare che una cartella di lavoro "live" riscriva i numeri del mese scorso

Questo è grave e non viene quasi mai menzionato. Se le celle dei tassi si aggiornano in tempo reale, ogni riga storica della cartella di lavoro viene rivalutata al tasso di oggi ogni volta che qualcuno apre il file. Il fatturato di marzo cambia ad aprile. La tua riconciliazione non quadrerà mai due volte.

Una volta che una transazione è avvenuta, il suo tasso è un fatto relativo a quella data, non un valore in tempo reale. Congelalo: converti una volta, incolla il risultato come valore accanto al tasso e alla data usati, e riserva la query live alle sole righe nuove. È la stessa disciplina che i sistemi di fatturazione multivaluta e di gestione delle note spese applicano a livello di database.

Bonus: i tassi incrociati

Se la tua API restituisce tutto rispetto a un'unica base, convertire EUR→GBP significa dividere un tasso per l'altro:

EUR→GBP  =  USD_GBP / USD_EUR  =  0.7892 / 0.9215  =  0.856430
1,000 EUR  =  856.43 GBP

Arrotonda solo all'ultimo passaggio. Arrotondare il tasso incrociato intermedio a quattro decimali e poi moltiplicare introduce un errore che si accumula su una tabella grande. Trovi maggiori dettagli nella nostra guida ai tassi di cambio incrociati.

Aggiornamento automatico, limiti di chiamate e come restare nel piano gratuito

Per far aggiornare da sola una tabella di tassi in Power Query: fai clic destro sulla query in Query e connessioni → Proprietà, poi spunta Aggiorna dati all'apertura del file e/o Aggiorna ogni N minuti.

Due cose di cui nessuno ti avverte:

  • L'aggiornamento all'apertura attiva il prompt di sicurezza dei dati esterni di Excel. Gli utenti vedranno una barra gialla e, finché non fanno clic su Abilita, l'aggiornamento "automatico" non fa nulla. Aggiungere la cartella a Centro protezione → Percorsi attendibili evita il problema.
  • Aggiornare ogni 15 minuti un tasso pubblicato una volta al giorno è puro spreco. Allinea l'intervallo alla frequenza con cui la tua fonte cambia davvero. Per la maggior parte del lavoro di fatturazione e reportistica, una volta all'apertura basta e avanza.

Tieni d'occhio i consumi usando gli header di risposta che Finexly restituisce — X-RateLimit-Limit, X-RateLimit-Used e X-RateLimit-Units. Il piano gratuito consente 1.000 richieste al mese senza carta di credito, il che è comodo per una cartella di lavoro che si aggiorna all'apertura e stretto per una griglia volatile basata su WEBSERVICE. Se sei costantemente vicino al tetto, la soluzione è quasi sempre raggruppare le chiamate in /v1/convert invece di passare a un piano a pagamento. La nostra guida a caching e gestione degli errori affronta gli stessi principi fuori da Excel.

Risoluzione dei problemi

SintomoCausaSoluzione
#VALUE! da WEBSERVICEProtocollo non supportato, URL oltre 2.048 caratteri o risposta oltre il limite di 32.767 caratteri per cellaUsa https, accorcia la query, richiedi meno coppie per chiamata
WEBSERVICE non restituisce nulla su MacNon supportato al di fuori del desktop WindowsUsa il tipo di dati Valute o sposta la cartella di lavoro su Windows
Pulsante Valute disattivatoNon sei su Microsoft 365, oppure hai un account non multi-tenantVerifica la licenza; Excel perpetuo non ha i tipi di dati collegati
#BUSY! o #CONNECT!Tipo di dati collegato ancora in risoluzione, o assenza di connettivitàAttendi, poi Dati → Aggiorna tutti
Power Query: "origine dati dinamica" all'aggiornamentoURL intero concatenato in un'unica stringaSeparalo in RelativePath e Query come mostrato sopra
#N/A dopo l'aggiornamentoCodice valuta assente nella risposta, o intervalli di ricerca spostatiRacchiudi in IFNA e usa riferimenti strutturati di tabella invece di F:F
401 UNAUTHORIZEDChiave mancante, malformata o inviata come header dove serve un parametro di queryVerifica quale stile di autenticazione supporta il metodo scelto

Domande frequenti

Excel può ottenere tassi di cambio in tempo reale? Non davvero in tempo reale. Il tipo di dati Valute è documentato esplicitamente come ritardato e senza intervallo pubblicato, e la maggior parte delle API gratuite pubblica una volta per giorno lavorativo. Quello che puoi ottenere è un dato attuale: un tasso aggiornato su richiesta da una fonte live, che è ciò che ti dà una API di cambio valuta. Per un vero FX tick per tick serve un feed in streaming, non un foglio di calcolo.

Come ottengo tassi di cambio in Excel senza una chiave API? Il tipo di dati Valute non richiede chiavi, ma richiede Microsoft 365 e non ti dà né timestamp né tracciabilità. Per qualsiasi cosa dovrai riconciliare in seguito, una API con chiave è la risposta migliore — e il livello gratuito di una API di valuta gratuita non costa nulla.

Perché WEBSERVICE non funziona in Excel per Mac? La documentazione di Microsoft afferma che WEBSERVICE si basa su funzionalità del sistema operativo Windows, quindi su Mac non restituisce alcun risultato anche se compare nella raccolta di funzioni. Lo stesso vale per FILTERXML. Gli utenti Mac dovrebbero usare Power Query dove possibile, oppure il tipo di dati Valute.

Come ottengo in Excel i tassi di cambio storici per una data specifica? Costruisci una tabella di tassi con una riga per data, popolata da una fonte di tassi storici, e poi interrogala con XLOOKUP usando la modalità di corrispondenza -1, così che weekend e festività ricadano sull'ultimo giorno lavorativo disponibile. Non rivalutare mai le transazioni passate al tasso di oggi.

Posso usare Power Query per convertire un'intera tabella di transazioni in una volta sola? Sì, e dovresti farlo. Unisci la query delle transazioni con quella dei tassi sul codice valuta, espandi la colonna del tasso e aggiungi una colonna personalizzata per l'importo convertito. Un solo join sostituisce decine di migliaia di formule volatili e si aggiorna in un unico passaggio.

Quale metodo dovrei scegliere? Una coppia, controllo occasionale: tipo di dati Valute. Un prototipo su Windows: WEBSERVICE. Qualsiasi cosa da cui dipendono altre persone: Power Query, sempre.


Pronto a portare tassi attuali nel tuo foglio di calcolo nel modo giusto? Ottieni la tua chiave API Finexly gratuita — senza carta di credito. Ricevi 1.000 richieste al mese su oltre 170 valute, il parametro di query api_key che rende possibile WEBSERVICE e l'autenticazione tramite header per Power Query. Consulta la documentazione API per il riferimento completo degli endpoint, oppure confronta le API di valuta se stai ancora valutando le opzioni.

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 →

Condividi questo articolo