Ažurirani tečaj u Excelu

Opetovano sam analizirao načine uvoza podataka u Excel s interneta uz naknadno automatsko ažuriranje. Posebno:

  • U starijim verzijama Excela 2007-2013 to se moglo učiniti izravnim web zahtjevom.
  • Počevši od 2010., to se može učiniti vrlo praktično s dodatkom Power Query.

Ovim metodama u najnovijim verzijama Microsoft Excela sada možete dodati još jednu – uvoz podataka s interneta u XML formatu pomoću ugrađenih funkcija.

XML (eXtensible Markup Language = Proširivi označni jezik) je univerzalni jezik dizajniran za opisivanje bilo koje vrste podataka. Zapravo, to je običan tekst, ali s dodanim posebnim oznakama za označavanje strukture podataka. Mnoga mjesta nude besplatne tokove svojih podataka u XML formatu za preuzimanje. Na web stranici Središnje banke naše zemlje (www.cbr.ru), posebno, uz pomoć slične tehnologije, dani su podaci o tečajevima različitih valuta. Na web stranici Moskovske burze (www.moex.com) na isti način možete preuzeti kotacije za dionice, obveznice i mnoge druge korisne informacije.

Od verzije 2013. Excel ima dvije funkcije za izravno učitavanje XML podataka s interneta u ćelije radnog lista: WEB SERVIS (WEBSERVIS) и FILTER.XML (FILTERXML). Rade u parovima – prvo funkcija WEB SERVIS izvršava zahtjev prema željenoj stranici i vraća svoj odgovor u XML formatu, a zatim pomoću funkcije FILTER.XML mi "raščlanjujemo" ovaj odgovor na komponente, izvlačeći iz njega podatke koji su nam potrebni.

Pogledajmo rad ovih funkcija na klasičnom primjeru – uvozom tečaja bilo koje valute koja nam je potrebna za određeni datumski interval s web stranice Središnje banke naše zemlje. Koristit ćemo sljedeću konstrukciju kao prazninu:

Ažurirani tečaj u Excelu

Ovdje:

  • Žuta polja sadrže datume početka i završetka razdoblja koje nas zanima.
  • Plavi ima padajući popis valuta pomoću naredbe Podaci – Provjera – Popis (Podaci — Provjera — Popis).
  • U zelenim ćelijama koristit ćemo naše funkcije za stvaranje niza upita i dobivanje odgovora poslužitelja.
  • Tablica s desne strane je referenca na kodove valuta (trebat će nam malo kasnije).

Idemo!

Korak 1. Formiranje niza upita

Da biste dobili potrebne informacije sa stranice, morate ih ispravno pitati. Idemo na www.cbr.ru i otvorimo vezu u podnožju glavne stranice' Tehnički resursi'- Dobivanje podataka pomoću XML-a (http://cbr.ru/development/SXML/). Skrolamo malo niže i u drugom primjeru (Primjer 2) bit će ono što nam treba – dobivanje tečaja za određeni datumski interval:

Ažurirani tečaj u Excelu

Kao što možete vidjeti iz primjera, niz upita mora sadržavati datume početka (datum_req1) i završeci (datum_req2) razdoblja koje nas zanima i kod valute (VAL_NM_RQ), stopu koju želimo dobiti. Glavne kodove valuta možete pronaći u tablici u nastavku:

Valuta

Kodirati

                         

Valuta

Kodirati

Australski dolar R01010

litavski litas

R01435

austrijski šiling

R01015

Litavski kupon

R01435

Azerbejdžanski manat

R01020

Moldavski leu

R01500

Funta

R01035

RRµRjRµS † RêR ° SDŽ RjR ° SĐRêR °

R01510

angolska nova kvanza

R01040

nizozemski gulden

R01523

Armenski dram

R01060

Norveška kruna

R01535

Bjeloruska rublja

R01090

poljski zlot

R01565

belgijski franak

R01095

Portugalski escudo

R01570

Bugarski lav

R01100

Rumunjski leu

R01585

Brazilski real

R01115

Singapurski dolar

R01625

Mađarska forinta

R01135

Surinamski dolar

R01665

Hong Kong Dollar

R01200

tadžički somoni

R01670

grčka drahma

R01205

tadžička rublja

R01670

Danska kruna

R01215

Turska lira

R01700

Američki dolar

R01235

turkmenski manat

R01710

Euro

R01239

Novi turkmenski manat

R01710

Indijska rupija

R01270

uzbečki sum

R01717

Irska funta

R01305

Ukrajinska grivna

R01720

islandska kruna

R01310

Ukrajinski karbovanec

R01720

španjolska pezeta

R01315

finska marka

R01740

talijanska lira

R01325

Francuski franak

R01750

kazahstanski tenge

R01335

Češka kruna

R01760

kanadski dolar

R01350

Švedska kruna

R01770

kirgiški som

R01370

švicarski franak

R01775

Kineski juan

R01375

estonska kruna

R01795

Kuvajtski dinar

R01390

Jugoslavenski novi dinar

R01804

latvijski lat

R01405

Južnoafrički rand

R01810

Libanonska funta

R01420

Republika Koreja Won

R01815

japanski jen

R01820

Kompletan vodič za kodove valuta također je dostupan na web stranici Središnje banke – pogledajte http://cbr.ru/scripts/XML_val.asp?d=0

Sada ćemo oblikovati niz upita u ćeliji na listu sa:

  • operator ulančavanja teksta (&) za sastavljanje;
  • Značajke VPR (VLOOKUP)pronaći šifru valute koja nam je potrebna u imeniku;
  • Značajke TEKST (TEKST), koji pretvara datum prema zadanom uzorku dan-mjesec-godina kroz kosu crtu.

Ažurirani tečaj u Excelu

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

Korak 2. Izvršite zahtjev

Sada koristimo funkciju WEB SERVIS (WEBSERVIS) s generiranim nizom upita kao jedinim argumentom. Odgovor će biti dugačak redak XML koda (bolje je uključiti prelom riječi i povećati veličinu ćelije ako ga želite vidjeti u cijelosti):

Ažurirani tečaj u Excelu

Korak 3. Raščlanjivanje odgovora

Kako biste lakše razumjeli strukturu podataka odgovora, bolje je koristiti jedan od online XML parsera (na primjer, http://xpather.com/ ili https://jsonformatter.org/xml-parser), koji može vizualno oblikovati XML kod, dodajući mu uvlake i ističući sintaksu bojom. Tada će sve biti puno jasnije:

Ažurirani tečaj u Excelu

Sada možete jasno vidjeti da su vrijednosti tečaja uokvirene našim oznakama ..., a datumi su atributi Datum u oznakama .

Da biste ih izdvojili, odaberite stupac od deset (ili više – ako ste učinili s marginom) praznih ćelija na listu (jer je postavljen datumski interval od 10 dana) i unesite funkciju u traku formule FILTER.XML (FILTARXML):

Ažurirani tečaj u Excelu

Ovdje je prvi argument poveznica na ćeliju s odgovorom poslužitelja (B8), a drugi je niz upita u XPathu, posebnom jeziku koji se može koristiti za pristup potrebnim fragmentima XML koda i njihovo izdvajanje. Više o XPath jeziku, na primjer, možete pročitati ovdje.

Važno je da nakon unosa formule ne pritisnete ućii tipkovni prečac Ctrl+smjena+ući, tj. unesite ga kao formulu polja (automatski će se dodati vitičaste zagrade oko njega). Ako imate najnoviju verziju sustava Office 365 s podrškom za dinamičke nizove u Excelu, onda jednostavno ući, a ne morate unaprijed označavati prazne ćelije – funkcija će sama uzeti onoliko ćelija koliko treba.

Da bismo izdvojili datume, učinit ćemo isto – odabrat ćemo nekoliko praznih ćelija u susjednom stupcu i upotrijebiti istu funkciju, ali s drugačijim XPath upitom, kako bismo dobili sve vrijednosti atributa Datum iz oznaka Record:

=FILTER.XML(B8;”//Zapis/@Datum”)

Sada u budućnosti, kada promijenite datume u originalnim ćelijama B2 i B3 ili odaberete drugu valutu na padajućem popisu ćelije B3, naš će se upit automatski ažurirati, pozivajući se na poslužitelj središnje banke za nove podatke. Za ručno prisilno ažuriranje možete dodatno koristiti tipkovni prečac Ctrl+drugo+F9.

  • Uvezite tečaj bitcoina u Excel putem Power Queryja
  • Uvezite tečajnu listu s interneta u starije verzije Excela

Ostavi odgovor