Aktualizovaný směnný kurz v Excelu

Opakovaně jsem rozebíral způsoby importu dat do Excelu z internetu s následnou automatickou aktualizací. Zejména:

  • Ve starších verzích Excelu 2007-2013 to bylo možné provést pomocí přímého webového požadavku.
  • Od roku 2010 to lze velmi pohodlně provést pomocí doplňku Power Query.

K těmto metodám v nejnovějších verzích Microsoft Excelu nyní můžete přidat další – import dat z internetu ve formátu XML pomocí vestavěných funkcí.

XML (eXtensible Markup Language = Extensible Markup Language) je univerzální jazyk určený k popisu jakéhokoli druhu dat. Ve skutečnosti je to prostý text, ale jsou k němu přidány speciální značky pro označení datové struktury. Mnoho webů poskytuje zdarma streamy svých dat ve formátu XML, které si může kdokoli stáhnout. Zejména na webových stránkách Centrální banky naší země (www.cbr.ru) jsou pomocí podobné technologie uvedeny údaje o směnných kurzech různých měn. Z webových stránek Moskevské burzy (www.moex.com) si stejným způsobem můžete stáhnout kotace akcií, dluhopisů a mnoho dalších užitečných informací.

Od verze 2013 má Excel dvě funkce pro přímé načítání dat XML z internetu do buněk listu: WEBOVÁ SLUŽBA (WEBOVÁ SLUŽBA) и FILTER.XML (FILTERXML). Pracují ve dvojicích – nejprve funkce WEBOVÁ SLUŽBA provede požadavek na požadovaný web a vrátí svou odpověď ve formátu XML a poté pomocí funkce FILTER.XML tuto odpověď „analyzujeme“ do komponent a extrahujeme z ní data, která potřebujeme.

Podívejme se na fungování těchto funkcí na klasickém příkladu – importování kurzu libovolné měny, kterou potřebujeme pro daný časový interval z webu Centrální banky naší země. Jako polotovar použijeme následující konstrukci:

Aktualizovaný směnný kurz v Excelu

Zde:

  • Žluté buňky obsahují datum začátku a konce období, které nás zajímá.
  • Modrý má rozevírací seznam měn pomocí příkazu Data – Validace – Seznam (Data — Ověření — Seznam).
  • V zelených buňkách použijeme naše funkce k vytvoření řetězce dotazu a získání odpovědi serveru.
  • Tabulka vpravo je odkaz na kódy měn (budeme to potřebovat o něco později).

Pojďme!

Krok 1. Vytvoření řetězce dotazu

Abyste z webu získali požadované informace, musíte se jich správně zeptat. Přejdeme na www.cbr.ru a otevřeme odkaz v patičce hlavní stránky' Technické zdroje - Získávání dat pomocí XML (http://cbr.ru/development/SXML/). Posuneme se o něco níže a ve druhém příkladu (Příklad 2) bude to, co potřebujeme – získání směnných kurzů pro daný interval dat:

Aktualizovaný směnný kurz v Excelu

Jak můžete vidět z příkladu, řetězec dotazu musí obsahovat počáteční data (date_req1) a koncovky (date_req2) období, které nás zajímá, a kód měny (VAL_NM_RQ), jehož rychlost chceme získat. Hlavní kódy měn naleznete v tabulce níže:

Měna

Kód

                         

Měna

Kód

Australský dolar R01010

Litevský litas

R01435

rakouský šilink

R01015

Litevský kupón

R01435

Ázerbájdžánská manát

R01020

Moldavský leu

R01500

Libra

R01035

РќРµРјРµС † РєР ° СЏ РјР ° СЂРєР °

R01510

Angolská nová kwanza

R01040

holandský gulden

R01523

Arménská Dram

R01060

Norská koruna

R01535

Běloruský rubl

R01090

zlotý

R01565

belgický frank

R01095

Portugalské escudo

R01570

Bulharský lev

R01100

Rumunský leu

R01585

Brazilský real

R01115

Singapurský dolar

R01625

Maďarský forint

R01135

Surinamský dolar

R01665

Hong Kong dolar

R01200

tádžické somoni

R01670

Řecká drachma

R01205

tádžický rubl

R01670

Dánská koruna

R01215

Turecké liry

R01700

americký dolar

R01235

Turkmen manat

R01710

Euro

R01239

Nový turkmenský manat

R01710

Indická rupie

R01270

uzbecký součet

R01717

Irská libra

R01305

Ukrajinská hřivna

R01720

Islandská koruna

R01310

Ukrajinský karbovanec

R01720

Španělská peseta

R01315

finská značka

R01740

italská lira

R01325

upřímný francouzský

R01750

Kazachstán tenge

R01335

Česká koruna

R01760

kanadský dolar

R01350

Švédská koruna

R01770

Kyrgyzské som

R01370

švýcarský frank

R01775

Čínský jüan

R01375

estonská koruna

R01795

Kuvajtský dinár

R01390

Jugoslávský nový dinár

R01804

lotyšský lat

R01405

Jihoafrický rand

R01810

Libanonská libra

R01420

Vyhrála Korejská republika

R01815

japonský jen

R01820

Kompletní průvodce kódy měn je také k dispozici na webu centrální banky – viz http://cbr.ru/scripts/XML_val.asp?d=0

Nyní vytvoříme řetězec dotazu v buňce na listu s:

  • operátor zřetězení textu (&) pro jeho sestavení;
  • Funkce VPR (VYHLEDAT)abychom v adresáři našli kód měny, kterou potřebujeme;
  • Funkce TEXT (TEXT), který převede datum podle daného vzoru den-měsíc-rok přes lomítko.

Aktualizovaný směnný kurz v Excelu

="http://cbr.ru/scripts/XML_dynamic.asp?date_req1="&ТЕКСТ(B2;"ДД/ММ/ГГГГ")&  "&date_req2="&ТЕКСТ(B3;"ДД/ММ/ГГГГ")&"&VAL_NM_RQ="&ВПР(B4;M:N;2;0)  

Krok 2. Proveďte požadavek

Nyní použijeme funkci WEBOVÁ SLUŽBA (WEBOVÁ SLUŽBA) s vygenerovaným řetězcem dotazu jako jediným argumentem. Odpovědí bude dlouhá řada kódu XML (pokud ji chcete vidět celou, je lepší zapnout zalamování slov a zvětšit velikost buňky):

Aktualizovaný směnný kurz v Excelu

Krok 3. Analýza odpovědi

Pro snazší pochopení struktury dat odpovědí je lepší použít některý z online analyzátorů XML (například http://xpather.com/ nebo https://jsonformatter.org/xml-parser), který umí vizuálně formátovat kód XML, přidávat do něj odrážky a zvýraznit syntaxi barvou. Pak bude vše mnohem jasnější:

Aktualizovaný směnný kurz v Excelu

Nyní můžete jasně vidět, že hodnoty kurzu jsou orámovány našimi značkami ..., a data jsou atributy Datum ve značkách .

Chcete-li je extrahovat, vyberte na listu sloupec deseti (nebo více – pokud se to dělá s okrajem) prázdných buněk (protože byl nastaven 10denní interval data) a zadejte funkci do řádku vzorců FILTER.XML (FILTRXML):

Aktualizovaný směnný kurz v Excelu

Zde je prvním argumentem odkaz na buňku s odpovědí serveru (B8) a druhým je řetězec dotazu v XPath, speciálním jazyce, který lze použít pro přístup k nezbytným fragmentům kódu XML a jejich extrakci. Více o jazyce XPath si můžete přečíst například zde.

Je důležité, abyste po zadání vzorce netiskli vstoupita klávesovou zkratkou Ctrl+směna+vstoupit, tj. zadejte jej jako maticový vzorec (složené závorky kolem něj budou přidány automaticky). Pokud máte nejnovější verzi Office 365 s podporou dynamických polí v Excelu, pak je to jednoduché vstoupit, a nemusíte předem vybírat prázdné buňky – samotná funkce si vezme tolik buněk, kolik potřebuje.

Pro extrakci dat uděláme totéž – vybereme několik prázdných buněk v sousedním sloupci a použijeme stejnou funkci, ale s jiným dotazem XPath, abychom získali všechny hodnoty atributů Date ze značek Record:

=FILTER.XML(B8;”//Záznam/@Datum”)

Nyní v budoucnu, při změně dat v původních buňkách B2 a B3 nebo výběru jiné měny v rozevíracím seznamu buňky B3, bude náš dotaz automaticky aktualizován s odkazem na server centrální banky pro nová data. Chcete-li aktualizaci vynutit ručně, můžete navíc použít klávesovou zkratku Ctrl+Další+F9.

  • Import bitcoinů do Excelu přes Power Query
  • Import směnných kurzů z internetu ve starších verzích Excelu

Napsat komentář