Masz pytania lub problemy? Napisz w GitHub Discussions.

Własnym rozwiązaniem Excela dla kursów walut jest typ danych Waluty w Microsoft 365: bieżący rynkowy kurs uśredniony, którego nie można przypisać do konkretnego źródła ani pobrać w wersji historycznej. Frankfurter jest w pełni przejrzysty. Jeśli potrzebujesz wiążącego źródła, możesz wybrać stałą instytucję: kurs referencyjny EBC do celów podatku VAT i celnego, NBP czy brazylijski PTAX. Historia wybranego dostawcy pozostaje taka, jak została opublikowana. Całą pracę wykonuje Power Query, na Windowsie i Macu. W systemie Windows dostępna jest dodatkowo jednowierszowa formuła do szybkich przeliczeń.

Power Query

Standardowy sposób, zarówno na Windowsie, jak i na Macu. Wybierz Dane, Ze strony sieci Web, wklej adres endpointu CSV i załaduj tabelę z kolumnami date,base,quote,rate. Odświeżaj ją w dowolnym momencie przez Dane, Odśwież wszystko:

https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur

Wiele walut docelowych możesz pobrać naraz, oddzielając je przecinkami:

https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur,gbp,jpy

Przeliczanie kwoty

Power Query wczytuje kurs, a nie przeliczoną kwotę całkowitą. Pomnóż swoją kwotę przez komórkę z załadowanym kursem. W przypadku pojedynczego przeliczenia bez kwerendy Microsoft 365 w systemie Windows może bezpośrednio wywołać API. Utwórz funkcję nazwaną (Formuły, Menedżer nazw, Nowy) o nazwie FRANKFURTER z następującą definicją:

=LAMBDA(amount, from, to, [date], amount * NUMBERVALUE(TEXTBEFORE(TEXTAFTER(WEBSERVICE("https://api.frankfurter.dev/v2/rate/" & from & "/" & to & IF(ISOMITTED(date), "", "?date=" & YEAR(date) & "-" & TEXT(MONTH(date), "00") & "-" & TEXT(DAY(date), "00"))), """rate"":"), "}"), "."))

Następnie wywołaj ją z dowolnej komórki:

=FRANKFURTER(100, "usd", "eur")

Podaj datę, aby pobrać kurs historyczny:

=FRANKFURTER(100, "usd", "eur", DATE(2020, 1, 2))

Funkcja WEBSERVICE jest dostępna wyłącznie w systemie Windows. Ponieważ Excel nie ma parsera JSON w formułach, funkcja odczytuje kurs bezpośrednio z tekstu odpowiedzi. NUMBERVALUE z jawnie podaną kropką dziesiętną sprawia, że działa ona także w ustawieniach regionalnych z przecinkiem dziesiętnym. Na Macu mnóż przez komórkę z kwerendy Power Query.

Wybór oficjalnego źródła

Domyślnie otrzymujesz kurs uśredniony ze wszystkich źródeł. Dodaj parametr providers do adresu URL, aby wybrać konkretną instytucję. Ma to kluczowe znaczenie dla podatków i księgowości: wiele jurysdykcji wymaga stosowania kursu własnego banku centralnego.

https://api.frankfurter.dev/v2/rates.csv?base=usd&quotes=eur&providers=ecb
ECB
Kurs referencyjny Europejskiego Banku Centralnego, standard dla unijnego podatku VAT i ceł.
NBP
Narodowy Bank Polski. Rozliczenia podatku VAT i dochodowego w Polsce wymagają kursu NBP.
CNB
Czeski Bank Narodowy, referencja dla czeskiej księgowości i podatków.
BCB
Banco Central do Brasil PTAX, referencja dla brazylijskich umów i podatków.
BANXICO
Kurs FIX Banco de México do regulowania zobowiązań w dolarach amerykańskich.

Zobacz wszystkie źródła. Wybrana instytucja działa według własnego harmonogramu publikacji, dlatego jej najnowszy kurs może być opóźniony o jeden dzień w stosunku do kursu rynkowego.

Szeregi historyczne

Użyj parametru from dla zakresu dat oraz group=month, aby zagregować dane do 1 wiersza na miesiąc, gotowego do wykresów. Załaduj dane przez Power Query, a będą się odświeżać jak każda inna kwerenda. Historia kursów uśrednionych może się nieznacznie zmienić, gdy napływają nowe dane. Gdy wartości muszą pozostać stałe, wybierz konkretnego dostawcę.

https://api.frankfurter.dev/v2/rates.csv?from=1949-12-01&base=usd&quotes=gbp&providers=bbk&group=month

Pobiera to kurs dolara amerykańskiego do funta brytyjskiego aż do 1949 roku z archiwum Deutsche Bundesbank. Historyczne fixingi Bundesbanku obejmują dolara wobec marki niemieckiej od 1948 roku oraz większość innych kursów dolara od 1949 do 1970 roku. Od 1999 roku kontrolę przejmuje Europejski Bank Centralny; nowoczesne szeregi czasowe korzystają ze standardowego kursu łączonego lub providers=ecb.