Hivatkozott Excel verzio: Excel 2010 Excel 2016 Office365
A lényeg az előző részben van, ahol PowerQuery-vel csatlakozunk az MNB honlapjához, és onnan töltjük be a két dátum közötti árfolyamlistát.
Ebben a részben a használatára nézünk példát. Mert ugye a letöltött dátum intervallum nem folytonos, a munkaszüneti napok hiányoznak belőle. Ezért ha mi egy munkaszüneti naphoz keresnénk napi árfolyamot, akkor az FKERES hibát fog visszaadni. A bal oldali ábrán kiemeltem, hogy például hol maradnak ki a hétvégék a listából. A jobb oldali ábrán van egy dátum listánk, amely napokhoz Euró árfolyamot szeretnénk keresni a letöltött táblázatból, akkor a hiányzó napokra az FKERES hibát fog visszaadni. A feladat az, hogy ha nem találunk pontos dátum egyezést, akkor a következő létező munkanap árfolyamával számoljunk.
A megoldás
Ha nincs pontos egyezés, keressük meg a keresett dátum utáni első létező dátumot, és vegyük abból a sorból az árfolyamot. Ezt úgy is megfogalmazhatjuk, hogy keresse meg a keresett dátumnál kisebbek közül a legutolsót, és az árfolyamot vegye a következő sorból.
Mivel a zöld Euró árfolyam táblázatunkban a dátumok növekvő sorban vannak, lehet keresni közelítő kereséssel is, ami ha nem talál, akkor a legközelebbi, létező kisebbet fogja találatnak tekinteni. Ezt a HOL.VAN (MATCH) függvénnyel oldhatjuk meg.
sorszám = HOL.VAN(keresett_dátum;árfolyam tábla dátum oszlopa;1)
Ezután egy INDEX függvénnyel kivesszük az EUR oszlopból a következő sorban lévő árfolyamot.
=INDEX(EUR oszlop; sorszam+1)
Mindez egyben a hibakezeléssel
=HAHIBA(FKERES(E2;Table_0;2;0);INDEX(Table_0[EUR euro 1];HOL.VAN(E2;Table_0[Date];1)+1))
Ahol Table_0 az árfolyamtábla, F2 a saját listánk dátum oszlopának első cellája. Ezt aztán le lehet másolni az aljáig.
Letölthető munkafüzet
MNB-kovetkezo-munkanap-arfolyam
Sziasztok!
Apró, de fontos észrevétel…
„Ha nincs pontos egyezés, keressük meg a keresett dátum utáni első létező dátumot, és vegyük abból a sorból az árfolyamot.”
helyett:
Ha nincs pontos egyezés, keressük meg a keresett dátum előtti utolsó létező dátumot, és vegyük abból a sorból az (utolsó ismert) árfolyamot. Ne akarjunk visszamenni az időben és onnan jósolni a következő napi árfolyamot!
üdvözlettel
verax
Szia!
Elvileg teljesen igazad van, de a feladat a növekvő listában a következő nagyobb kiválasztását szeretné bemutatni. Valószínűleg nincs eléggé kidomborítva, és valóban, ha az aktuális dátum, azaz a mai nap pihenőnep, akkor a jövőből próbálná meg lekérni a következő dátumot, amit az MNB forrás még nem is tartalmaz. Az előző létező dátum egy sima FKERES ugye, csak nem pontos egyezést kell kérnünk.
Majd egyszer írok egy pontosítást.
Köszönöm!