Excel: kurs walut NBP - import i przewalutowanie
Rozliczasz zagraniczne akcje, faktury w euro albo zakupy w dolarach i do każdej pozycji potrzebujesz średniego kursu NBP z konkretnego dnia. Sprawdzanie go ręcznie na stronie banku przy kilkudziesięciu transakcjach to godzina klikania. Szybciej jest ściągnąć do Excela kursy walut NBP z całego roku naraz i dobierać je formułą.
W tym poradniku pokazuję, skąd wziąć oficjalny plik z kursami, jak w Power Query zamienić go w czystą tabelę z datą i kolumną dla każdej waluty, i jak podłączyć go tak, żeby nowe kursy dopisywały się same. Na koniec pułapki, na których najczęściej wychodzi zły wynik.
Najważniejsza z nich dotyczy forinta i jena: NBP podaje ich kurs za 100 jednostek, a tabela po imporcie tego nie mówi.
W tym poradniku:
- Skąd wziąć kursy walut NBP z całego roku
- Import pliku CSV do Power Query
- Porządkowanie tabeli kursów krok po kroku
- Kursy, które dopisują się same
- Pułapki: 100 forintów, kodowanie, separator
- Co dalej: przeliczenie transakcji na złote
Skąd wziąć kursy walut NBP z całego roku
NBP publikuje archiwum średnich kursów (tabela A) w plikach CSV, osobno dla każdego roku. Znajdziesz je na stronie archiwum kursów tabeli A (albo wpisując w wyszukiwarkę „nbp kursy walut csv”). Każdy wiersz pliku to jeden dzień roboczy, a każda kolumna to jedna waluta, od bata tajlandzkiego po SDR.

Plik możesz pobrać na dysk albo, lepiej, skopiować sam link do pliku z bieżącego roku. Po co, wyjaśniam w części o odświeżaniu.
Import pliku CSV do Power Query
W Excelu wybierz Dane > Pobierz dane > Z pliku > Z pliku tekstowego/CSV i wskaż pobrany plik.

W oknie podglądu sprawdź, czy polskie znaki w nazwach walut wyglądają poprawnie. Jeśli zamiast „dolar amerykański” widzisz krzaki, ustaw Pochodzenie pliku na 1250: Europa Środkowa (Windows). Potem kliknij Przekształć dane, żeby otworzyć edytor Power Query.

Porządkowanie tabeli kursów krok po kroku
Plik NBP nie jest gotową tabelą. Pod nagłówkiem stoi wiersz z pełnymi nazwami walut, a na samym dole trzy wiersze opisowe: kod ISO, nazwa waluty i liczba jednostek. Na końcu są jeszcze kolumny z numerem tabeli. Porządki zajmują kilka kliknięć.
- W panelu Zastosowane kroki usuń krok Zmieniono typ. Power Query zgadł typy przed porządkami i przy wierszach opisowych zgadł źle.
- Zaznacz trzy ostatnie kolumny (numer tabeli, pełny numer tabeli i pusta) i wybierz Usuń kolumny.
- Usuń wiersze > Usuń pierwsze wiersze, liczba 1. Znika wiersz z pełnymi nazwami walut.
- Na karcie Przekształć wybierz Odwróć wiersze. Wiersze opisowe z dołu pliku trafiają na górę.
- Usuń pierwsze wiersze, liczba 2 (liczba jednostek i nazwa waluty), a potem Usuń puste wiersze. Na górze zostaje wiersz z kodami ISO: USD, EUR, CHF.
- Kliknij ikonę tabeli w lewym górnym rogu podglądu i wybierz Użyj pierwszego wiersza jako nagłówków. Kolumny nazywają się teraz kodami walut, zamiast „1USD” czy „100HUF”.
- Pierwszej kolumnie nadaj nazwę „Data” i zmień jej typ na Data (opcja Zamień bieżącą). Kolumny z kursami Power Query ustawi jako liczby dziesiętne.






Na koniec Narzędzia główne > Zamknij i załaduj do i wybierz tabelę w nowym arkuszu. W pliku do pobrania ta tabela nazywa się „Kursy” i stoi w osobnym arkuszu.

Kursy, które dopisują się same
Plik z bieżącego roku NBP aktualizuje w każdy dzień roboczy, dopisując nowy wiersz. Jeśli zaimportujesz go z dysku, tabela zatrzyma się na dniu pobrania. Lepiej podłączyć go wprost z internetu:
- Na stronie NBP kliknij prawym przyciskiem link do pliku CSV z bieżącego roku i skopiuj adres.
- W Excelu wybierz Dane > Z sieci Web i wklej adres.
- Dalej postępuj tak samo jak przy pliku z dysku.
Od tej pory Dane > Odśwież wszystko dociąga kursy z ostatnich dni. W nowym roku wystarczy w kroku Źródło zmienić rok w adresie pliku. Jeśli potrzebujesz kursów z kilku lat, zaimportuj każdy rok osobno i połącz je przez Dołącz zapytania.
Drugą drogą jest API NBP, które zwraca kursy dla dowolnego okresu w formacie JSON. To bardziej elastyczne, ale wymaga rozwijania rekordów w Power Query. Krok po kroku opisuję to w poradniku o pobieraniu danych ze strony internetowej do Excela.
Pułapki: 100 forintów, kodowanie, separator
- Kurs za 100 albo 10 000 jednostek. Forint (HUF), jen (JPY), korona islandzka (ISK), peso chilijskie (CLP), rupia indyjska (INR) i won (KRW) są notowane za 100 jednostek, a rupia indonezyjska (IDR) za 10 000. Usuwając wiersz „liczba jednostek”, tracisz tę informację. Przy tych walutach podziel kurs przez 100 albo 10 000, inaczej wynik w złotych wyjdzie sto razy za duży.
- Kodowanie znaków. Plik jest zapisany w kodowaniu Windows-1250. Bez tego ustawienia nazwy walut mają zepsute polskie litery. Na samych kursach to się nie odbija, ale łatwo pomylić kolumny.
- Przecinek dziesiętny. Kursy mają przecinek, tak jak w polskich ustawieniach. Jeśli Twój Excel działa w ustawieniach angielskich, zmień typ kolumn przez Zmień typ > Używanie ustawień regionalnych z ustawieniem polskim.
- Tylko dni robocze. W weekendy i święta NBP nie publikuje kursów, więc tych dat w tabeli nie ma. Szukanie kursu z soboty dokładnym dopasowaniem skończy się błędem #N/D.
Co dalej: przeliczenie transakcji na złote
Z gotową tabelą kursów wystarczy obok każdej transakcji dobrać kurs z odpowiedniego dnia i pomnożyć go przez kwotę. W pliku do pobrania są dwa przykłady na transakcjach akcjami zagranicznymi: po kursie z dnia transakcji oraz z ostatniego dnia roboczego przed transakcją (D-1), którego wymagają przepisy podatkowe.

Formuły do obu przypadków, razem z tym, jak ominąć weekendy i święta przy kursie D-1, opisuję w osobnym poradniku: jak przeliczyć walutę po kursie NBP w Excelu.

Plik jest Twój bez zapisywania się na cokolwiek. Jeśli chcesz przejść Excela po kolei, zacznij od darmowego kursu.