Elke tutorial over live wisselkoersen in Excel belooft hetzelfde en levert stilletjes iets anders. Je volgt de stappen, er verschijnt een getal in een cel, en het lijkt live. Meestal is het dat niet. Het is een referentiekoers die één keer per dag wordt gepubliceerd, of een vertraagde notering, of een gescrapete HTML-tabel die bij de volgende vernieuwing geruisloos de verkeerde valuta teruggeeft.
Deze gids behandelt de vier methoden die echt werken — het ingebouwde gegevenstype Valuta's van Excel, de functie WEBSERVICE, Power Query en een herbruikbare LAMBDA — en, belangrijker nog, vertelt je welke in jouw versie van Excel draait, hoe actueel elk ervan werkelijk is, en waar elk ervan getallen produceert die fout zijn zonder ook maar één foutmelding.
Elke formule en elke query hieronder is geschreven op basis van de gedocumenteerde antwoordstructuren van de Finexly API en vóór publicatie op juistheid getest.
De vier methoden, en welke je daadwerkelijk kunt gebruiken
De valutafuncties van Excel zijn ongewoon versieafhankelijk. De helft van de tutorials over dit onderwerp raadt een methode aan die op de machine van de lezer niet bestaat. Begin hier.
| Methode | Werkt in | Werkelijke updatefrequentie | Kan een API-sleutel veilig meesturen? | Het meest geschikt voor |
|---|---|---|---|---|
| Gegevenstype Valuta's | Microsoft 365 (Windows + Mac), Excel voor het web. Niet 2016/2019/2021/2024 | Vertraagd, geen gepubliceerd interval; handmatig of bij openen vernieuwen | N.v.t. — geen API in het spel | Even iets opzoeken, een handvol paren |
WEBSERVICE | Alleen Windows-desktop: M365, 2024, 2021, 2019, 2016. Niet Mac, web of mobiel | Wat je API teruggeeft — maar de formule is vluchtig | ❌ Nee. De sleutel moet in de URL | Een of twee cellen, snelle prototypes |
| Power Query | Excel 2016+ op Windows. M365 voor Mac heeft Power Query maar geen Web-connector | Wat je API teruggeeft, bij elke vernieuwing | ✅ Ja, via Headers in M | Koerstabellen, bulkconversie, productie |
LAMBDA-wrapper | Excel 2021+/M365 op Windows (erft de beperkingen van WEBSERVICE) | Hetzelfde als WEBSERVICE | ❌ Nee | Een nette =FXRATE() voor spreadsheetgebruikers |
- Werk je op een Mac, dan staat de Web-connector van Power Query niet tussen je beschikbare bronnen en werkt
WEBSERVICEhelemaal niet. Microsoft is er duidelijk over:WEBSERVICE"kan in de functiegalerie van Excel voor Mac verschijnen, maar het is afhankelijk van functies van het Windows-besturingssysteem, dus het geeft op een Mac geen resultaten terug". Mac-gebruikers met Microsoft 365 zijn realistisch gezien beperkt tot het gegevenstype Valuta's. - Gebruik je een eeuwigdurende licentie van Excel 2019, 2021 of 2024, dan is het gegevenstype Valuta's voor jou niet beschikbaar — gekoppelde gegevenstypen bestaan alleen in Microsoft 365 en Excel voor het web. Jouw route is
WEBSERVICEof Power Query.
Methode 1: het ingebouwde gegevenstype Valuta's van Excel
Dit is de optie zonder code, en het is degene waar de meeste artikelen mee openen.
- Typ valutaparen in een kolom met ISO 4217-codes, gescheiden door een schuine streep of een dubbele punt —
USD/EUR,GBP:JPY. (Weet je niet zeker welke code je nodig hebt? Ons ISO 4217-naslagwerk somt ze allemaal op.) - Selecteer de cellen en ga naar Gegevens → Gegevenstypen → Valuta's.
- Elke cel wordt een gekoppelde record met een klein valutapictogram. Klik op het pictogram, of gebruik de knop Gegevens invoegen, en kies Prijs om de koers in de aangrenzende cel te laten overlopen.
- Vernieuw met Gegevens → Alles vernieuwen.
Wat Microsoft werkelijk belooft
Dit is het stuk dat de tutorials overslaan. Microsofts eigen documentatie bevat een waarschuwing op de pagina over Valuta's: "Valuta-informatie wordt geleverd 'as is' en kan vertraagd zijn. Deze gegevens mogen daarom niet worden gebruikt voor handelsdoeleinden of advies." Er is geen gepubliceerd vernieuwingsinterval voor valutaparen. De onderliggende financiële gegevens komen van LSEG Data & Analytics (voorheen Refinitiv) en worden via Bing aangeboden.
Nog drie beperkingen die ertoe doen als je iets echts bouwt:
- De beschikbaarheid is tenantgebonden. Microsoft stelt dat "valutaparen alleen beschikbaar zijn voor Microsoft 365-accounts (Worldwide Multi-Tenant-clients)". Zit je organisatie op een soevereine of overheidscloud, dan is de knop Valuta's grijs en zal geen enkele vorm van probleemoplossing daar iets aan veranderen.
- Er is geen vernieuwing aan de serverkant. Gekoppelde gegevenstypen vernieuwen alleen zolang de werkmap in Excel geopend is. De automatische optie van vijf minuten bestaat, maar zit momenteel achter het Insiders-programma, en Microsoft merkt op dat "sommige gekoppelde gegevenstypen alleen handmatig kunnen worden vernieuwd".
- Het paar is een zwarte doos. Je krijgt een getal. Je ziet geen tijdstempel, geen bron en geen spread. Voor facturatie of rapportage heb je een controleerbare koers met een datum erbij nodig — en dat is een heel ander probleem.
Gebruik deze methode om een koers even te bekijken. Gebruik hem niet als invoer voor iets dat je later moet kunnen verantwoorden.
Methode 2: WEBSERVICE plus een valuta-API
WEBSERVICE(url) voert een HTTP GET uit en geeft de responsbody terug als tekst. De functie neemt precies één argument: een URL. Dat ene feit bepaalt al het andere aan deze methode.
Waarom je API-sleutel in de URL terecht moet komen
Omdat WEBSERVICE geen parameter voor headers heeft, kun je geen Authorization: Bearer … meesturen. Elke API die je vanuit WEBSERVICE gebruikt, moet de sleutel als queryparameter accepteren. Finexly ondersteunt beide vormen:
# 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_KEYWees eerlijk tegen jezelf over de afweging. Sleutels in URL's belanden in de accesslogs van servers en kunnen uitlekken via HTTP-referrerheaders, en de sleutel wordt in platte tekst in de werkmap opgeslagen — dus iedereen aan wie je het bestand mailt, heeft je sleutel. Gebruik voor spreadsheets een aparte sleutel met een lage quota, en verspreid nooit een WEBSERVICE-werkmap met een productiesleutel erin.
Een werkende formule
Zet de URL in A1 en de ruwe respons in A2:
A1: ="https://api.finexly.com/v1/rate?from="&B1&"&to="&C1&"&api_key="&$D$1
A2: =WEBSERVICE(A1)A2 bevat nu de letterlijke responstekst:
{"pair":"USD_EUR","rate":0.9215}Haal er nu het getal uit. Vrijwel elke concurrerende tutorial doet dit op positie — INDEX(TEXTSPLIT(...), 1, 6) — wat geruisloos breekt zodra de API een veld toevoegt of je van endpoint wisselt. Anker in plaats daarvan op de naam van de sleutel:
=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())
)Deze formule zoekt de letterlijke tekst "rate":, stapt over de zeven tekens ervan heen en leest door tot wat er als eerste komt: een komma of een sluitende accolade. Ze geeft 0.9215 terug uit de respons met twee velden van /v1/rate en uit de respons met vier velden van /v1/convert-amount, en ze geeft #N/A in plaats van een fout getal als de aanroep mislukt. LET vereist Excel 2021 of Microsoft 365; op Excel 2016/2019 kun je dezelfde FIND-aanroepen inline schrijven, ten koste van de leesbaarheid.
De vluchtigheidsval
WEBSERVICE is een vluchtige functie. Ze herberekent bij vrijwel elke wijziging in het werkblad, niet alleen wanneer je op F9 drukt. Bouw een converter van 40 rijen met één WEBSERVICE per rij en één toetsaanslag vuurt 40 HTTP-verzoeken af.
Bij een gratis niveau van 1.000 verzoeken per maand zijn dat ruwweg 25 toetsaanslagen voordat je wordt afgesloten. Twee verdedigingen: houd WEBSERVICE in één enkele cel en verwijs overal elders naar die ene cel, of zet de berekening op handmatig (Formules → Berekeningsopties → Handmatig) terwijl je bouwt. Beter nog: gebruik Power Query, dat niet vluchtig is.
Methode 3: Power Query — degene die schaalt
Power Query is hier de enige methode die een Authorization-header kan meesturen, volgens een schema kan vernieuwen en een tabel van vijftigduizend rijen aankan zonder te bezwijken. Het is ook de methode die elke tutorial volledig via GUI-klikken demonstreert, waardoor de eigenlijke M-code nergens te vinden is. Hier is hij.
Open Gegevens → Gegevens ophalen → Power Query-editor starten, dan Nieuwe bron → Lege query, dan Start → Geavanceerde editor, en plak:
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
TypedNoem hem FxRates en laad hem naar een werkblad. Je krijgt een nette tabel met drie kolommen: Base, Quote, rate.
Drie details in die query doen echt werk, en alle drie ontbreken in elke GUI-uitleg:
Headershoudt de sleutel uit de URL. Dit is het grootste beveiligingsvoordeel dat Power Query heeft ten opzichte vanWEBSERVICE.RelativePathenQueryzijn bewust losgetrokken van de basis-URL. Plak je de hele URL aan elkaar tot één string, dan classificeert Power Query hem als een dynamische gegevensbron, die in de Power BI-service niet onbeheerd kan worden vernieuwd. Door pad en query apart door te geven blijft de bron statisch en vernieuwbaar.- Eén verzoek, veel paren.
/v1/convertgeeft elk paar dat je opvraagt terug in één aanroep. Een werkmap die elk uur vernieuwt gedurende een werkdag van acht uur, over 22 werkdagen, doet op deze manier 176 verzoeken per maand. Dertig losse/v1/rate-aanroepen op hetzelfde schema zouden er 5.280 doen — vijf keer het gratis maandtegoed, voor identieke gegevens.
Een herbruikbare koersfunctie
Voor één paar op aanvraag verpak je het in een M-functie:
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
FxRateRoep hem vanuit elke andere query aan als FxRate("USD", "EUR").
50.000 rijen converteren zonder 50.000 lookups
XLOOKUP naar beneden slepen over een grote tabel is traag en kwetsbaar — en als de queryoutput bij het vernieuwen van formaat verandert, raken volledige kolomverwijzingen zoals F:F geruisloos uit het lood. Doe de join in plaats daarvan binnen Power Query:
- Laad je transactietabel in Power Query.
- Start → Query's samenvoegen, waarbij je je kolom
Currencykoppelt aanFxRates[Quote]. - Vouw de samengevoegde kolom uit en behoud
rate. - Kolom toevoegen → Aangepaste kolom met de omrekening.
Dat is één join over de hele tabel, één keer per vernieuwing geëvalueerd, zonder ook maar één vluchtige formule in de werkmap.
Methode 4: een herbruikbare =FXRATE() LAMBDA
Zijn de mensen die de werkmap gebruiken spreadsheetgebruikers en geen queryschrijvers, verstop dan al het bovenstaande achter één functie. Ga naar Formules → Namen beheren → Nieuw, noem hem FXRATE en stel Verwijst naar in op:
=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())
)
)Nu kan iedereen =FXRATE("USD","EUR",$D$1) schrijven en krijgt 0.9215. Sla de sleutel één keer op in D1, beveilig die cel, en de rest van de werkmap raakt hem nooit aan. Let op: dit erft elke beperking van WEBSERVICE — alleen Windows, vluchtig, sleutel in de URL — dus het is winst in bruikbaarheid, niet in beveiliging of schaalbaarheid.
Vijf manieren waarop valutaconversies in Excel geruisloos misgaan
Dit zijn correctheidsfouten, geen foutmeldingen. Er kleurt niets rood. De getallen zijn alleen niet wat je denkt dat ze zijn.
1. Vermenigvuldigen waar je zou moeten delen
Dit is de meest voorkomende fout in gepubliceerde Excel-valutatutorials, en het is de moeite waard om precies te zijn over de schade. Een USD_EUR-koers van 0.9215 rekent USD om naar EUR. Om de andere kant op te gaan — EUR naar USD — deel je.
- Juist:
100 / 0.9215= 108,52 USD - Fout:
100 × 0.9215= 92,15 USD
Het resultaat zit ernaast met het kwadraat van de koers, 0.9215² = 0.8492 — een onderschatting van 15,1% die er in een rapport volkomen aannemelijk uitziet. Schrijf de richting in je kolomkoppen (USD→EUR-koers, niet Koers) en de fout wordt moeilijk te maken.
2. JSON op positie parseren
INDEX(TEXTSPLIT(response, ":", "}"), 1, 6) werkt tot precies het moment waarop de API een veld toevoegt; vanaf dan geeft index 6 een andere waarde terug zonder foutmelding. Anker op de naam van de sleutel, zoals in de LET-formule hierboven, of gebruik Json.Document van Power Query, dat echt parseert.
3. Alles op twee decimalen afronden
Excel gaat standaard uit van twee decimalen; ISO 4217 niet. JPY, KRW en VND hebben nul subeenheden — ¥250.75 is geen geldig bedrag. BHD, KWD, OMR en TND hebben er drie. Een JPY-totaal op twee decimalen afronden en het verderop opnieuw afronden is precies hoe reconciliaties een paar eenheden gaan schelen. We behandelen alle regels in onze gids over valuta-afronding en decimalen.
4. Een mid-marketkoers zien als de koers die je betaalt
Elke koers in dit artikel — en in elke gratis API — is de mid-marketkoers: het middelpunt tussen bied en laat. Dat is niet wat je bank, kaartnetwerk of betaalprovider je geeft. Echte spreads lopen van ongeveer 0,5% tot enkele procenten. Bepaal je prijzen of geef je een klant een offerte, voeg dan een expliciete opslagkolom toe in plaats van te doen alsof de mid-marketkoers de afwikkelingskoers is. Onze uitleg over waar wisselkoers-API's hun data vandaan halen beschrijft wat deze feeds wel en niet vertegenwoordigen.
5. Een live werkmap de cijfers van vorige maand laten herschrijven
Deze is ernstig en wordt vrijwel nooit genoemd. Vernieuwen je koerscellen live, dan wordt elke historische rij in de werkmap opnieuw gewaardeerd tegen de koers van vandaag, elke keer dat iemand het bestand opent. De omzet van maart verandert in april. Je reconciliatie zal nooit twee keer kloppen.
Zodra een transactie heeft plaatsgevonden, is de koers ervan een feit over die datum, geen live waarde. Bevries hem: reken één keer om, plak het resultaat als waarde naast de gebruikte koers en datum, en houd de live query alleen voor nieuwe rijen. Dit is dezelfde discipline die systemen voor facturatie in meerdere valuta's en declaratiebeheer op databaseniveau afdwingen.
Bonus: kruiskoersen
Geeft je API alles terug ten opzichte van één basisvaluta, dan betekent EUR→GBP omrekenen dat je de ene koers door de andere deelt:
EUR→GBP = USD_GBP / USD_EUR = 0.7892 / 0.9215 = 0.856430
1,000 EUR = 856.43 GBPRond pas bij de laatste stap af. De tussenliggende kruiskoers op vier decimalen afronden en dan vermenigvuldigen introduceert een fout die zich over een grote tabel opstapelt. Meer details vind je in onze gids over kruiskoersen.
Automatisch vernieuwen, rate limits en binnen het gratis niveau blijven
Om een koerstabel in Power Query zichzelf te laten bijwerken: klik met de rechtermuisknop op de query in Query's en verbindingen → Eigenschappen en vink vervolgens Gegevens vernieuwen bij het openen van het bestand en/of Elke N minuten vernieuwen aan.
Twee dingen waar niemand je voor waarschuwt:
- Vernieuwen bij openen activeert de beveiligingsmelding van Excel voor externe gegevens. Gebruikers zien een gele balk en tot ze op Inschakelen klikken, doet de "automatische" vernieuwing helemaal niets. De map toevoegen aan Vertrouwenscentrum → Vertrouwde locaties voorkomt dat.
- Elke 15 minuten vernieuwen tegen een dagelijks gepubliceerde koers is pure verspilling. Stem je interval af op hoe vaak je bron werkelijk verandert. Voor de meeste facturatie- en rapportagetaken is één keer bij openen ruim voldoende.
Houd je verbruik in de gaten met de responsheaders die Finexly teruggeeft — X-RateLimit-Limit, X-RateLimit-Used en X-RateLimit-Units. Het gratis plan staat 1.000 verzoeken per maand zonder creditcard toe, wat comfortabel is voor een werkmap die bij openen vernieuwt en krap voor een vluchtig WEBSERVICE-raster. Zit je structureel tegen het plafond aan, dan is de oplossing bijna altijd bundelen in /v1/convert in plaats van overstappen op een betaald plan. Onze gids over caching en foutafhandeling behandelt dezelfde principes buiten Excel.
Problemen oplossen
| Symptoom | Oorzaak | Oplossing |
|---|---|---|
#VALUE! uit WEBSERVICE | Niet-ondersteund protocol, URL langer dan 2.048 tekens, of een respons boven de cellimiet van 32.767 tekens | Gebruik https, kort de query in, vraag minder paren per aanroep op |
WEBSERVICE geeft niets terug op een Mac | Niet ondersteund buiten de Windows-desktop | Gebruik het gegevenstype Valuta's of verplaats de werkmap naar Windows |
| Knop Valuta's is grijs | Geen Microsoft 365, of een account dat niet multi-tenant is | Controleer je licentie; eeuwigdurend Excel heeft geen gekoppelde gegevenstypen |
#BUSY! of #CONNECT! | Gekoppeld gegevenstype is nog aan het oplossen, of geen verbinding | Wacht en kies dan Gegevens → Alles vernieuwen |
| Power Query: "dynamische gegevensbron" bij vernieuwen | Hele URL aan elkaar geplakt tot één string | Splits op in RelativePath en Query zoals hierboven getoond |
#N/A na vernieuwen | Valutacode staat niet in de respons, of zoekbereiken zijn verschoven | Wikkel in IFNA en gebruik gestructureerde tabelverwijzingen in plaats van F:F |
401 UNAUTHORIZED | Sleutel ontbreekt, is misvormd, of wordt als header meegestuurd waar een queryparameter vereist is | Controleer welke authenticatiestijl de methode ondersteunt |
Veelgestelde vragen
Kan Excel realtime wisselkoersen ophalen? Niet echt realtime. Het gegevenstype Valuta's is expliciet gedocumenteerd als vertraagd zonder gepubliceerd interval, en de meeste gratis API's publiceren één keer per werkdag. Wat je wel kunt krijgen is actueel: een koers die op aanvraag wordt vernieuwd vanuit een live bron, en dat is precies wat een valuta-API je geeft. Voor echte FX op tickniveau heb je een streamingfeed nodig, geen spreadsheet.
Hoe haal ik wisselkoersen in Excel op zonder API-sleutel? Het gegevenstype Valuta's heeft geen sleutel nodig, maar vereist Microsoft 365 en geeft je geen tijdstempel of audittrail. Voor alles wat je later moet reconciliëren is een API met sleutel het betere antwoord — en het gratis niveau van een gratis valuta-API kost niets.
Waarom werkt WEBSERVICE niet in Excel voor Mac?
Microsofts documentatie stelt dat WEBSERVICE afhankelijk is van functies van het Windows-besturingssysteem en daarom op een Mac geen resultaat teruggeeft, ook al verschijnt de functie in de functiegalerie. Hetzelfde geldt voor FILTERXML. Mac-gebruikers kunnen het beste Power Query gebruiken waar mogelijk, of het gegevenstype Valuta's.
Hoe haal ik in Excel historische wisselkoersen op voor een specifieke datum?
Bouw een koerstabel met één rij per datum, gevuld vanuit een bron met historische koersen, en gebruik daarop XLOOKUP met zoekmodus -1, zodat weekenden en feestdagen terugvallen op de laatst beschikbare werkdag. Waardeer transacties uit het verleden nooit opnieuw tegen de koers van vandaag.
Kan ik Power Query gebruiken om een hele transactietabel in één keer om te rekenen? Ja, en dat zou je moeten doen. Voeg je transactiequery samen met je koersquery op de valutacode, vouw de koerskolom uit en voeg een aangepaste kolom toe voor het omgerekende bedrag. Eén join vervangt tienduizenden vluchtige formules en vernieuwt in één keer.
Welke methode moet ik kiezen?
Eén paar, af en toe een controle: het gegevenstype Valuta's. Een prototype op Windows: WEBSERVICE. Alles waar andere mensen van afhankelijk zijn: Power Query, altijd.
Klaar om actuele koersen op de juiste manier in je spreadsheet te krijgen? Vraag je gratis Finexly API-sleutel aan — geen creditcard nodig. Je krijgt 1.000 verzoeken per maand over meer dan 170 valuta's, de queryparameter api_key die WEBSERVICE mogelijk maakt, en headergebaseerde authenticatie voor Power Query. Bekijk de API-documentatie voor de volledige endpointreferentie, of vergelijk valuta-API's als je nog opties aan het afwegen bent.
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 →