Cuprins
Am analizat în mod repetat modalități de a importa date în Excel de pe Internet cu actualizarea automată ulterioară. În special:
- În versiunile mai vechi de Excel 2007-2013, acest lucru se poate face cu o solicitare web directă.
- Începând din 2010, acest lucru se poate face foarte convenabil cu programul de completare Power Query.
La aceste metode din cele mai recente versiuni de Microsoft Excel, acum puteți adăuga o alta - importul de date de pe Internet în format XML folosind funcții încorporate.
XML (eXtensible Markup Language = Extensible Markup Language) este un limbaj universal conceput pentru a descrie orice tip de date. De fapt, este text simplu, dar cu etichete speciale adăugate pentru a marca structura datelor. Multe site-uri oferă fluxuri gratuite de date în format XML pe care oricine le poate descărca. Pe site-ul Băncii Centrale a Țării Noastre (www.cbr.ru), în special, cu ajutorul unei tehnologii similare, sunt date date despre cursurile de schimb ale diferitelor valute. De pe site-ul Moscow Exchange (www.moex.com) puteți descărca cotații pentru acțiuni, obligațiuni și multe alte informații utile în același mod.
Din versiunea 2013, Excel are două funcții pentru încărcarea directă a datelor XML de pe Internet în celulele foii de lucru: SERVICIU WEB (SERVICIU WEB) и FILTER.XML (FILTERXML). Ei lucrează în perechi – mai întâi funcția SERVICIU WEB execută o solicitare către site-ul dorit și returnează răspunsul acesteia în format XML, apoi utilizează funcția FILTER.XML „analăm” acest răspuns în componente, extragând datele de care avem nevoie din el.
Să ne uităm la funcționarea acestor funcții folosind un exemplu clasic – importul cursului de schimb al oricărei monede de care avem nevoie pentru un anumit interval de date de pe site-ul Băncii Centrale a Țării Noastre. Vom folosi următoarea construcție ca spațiu liber:
Aici:
- Celulele galbene conțin datele de început și de sfârșit ale perioadei care ne interesează.
- Cel albastru are o listă derulantă de valute folosind comanda Date – Validare – Lista (Date — Validare — Listă).
- În celulele verzi, vom folosi funcțiile noastre pentru a crea un șir de interogare și a obține răspunsul serverului.
- Tabelul din dreapta este o referință la codurile valutare (vom avea nevoie de el puțin mai târziu).
Sa mergem!
Pasul 1. Formarea unui șir de interogare
Pentru a obține informațiile necesare de pe site, trebuie să le solicitați corect. Mergem pe www.cbr.ru și deschidem linkul din subsolul paginii principale' Resurse tehnice'- Obținerea datelor folosind XML (http://cbr.ru/development/SXML/). Derulăm puțin mai jos și în al doilea exemplu (Exemplul 2) va fi ceea ce avem nevoie – obținerea cursurilor de schimb pentru un anumit interval de date:
După cum puteți vedea din exemplu, șirul de interogare trebuie să conțină date de început (data_req1) și terminații (data_req2) din perioada care ne interesează și codul monedei (VAL_NM_RQ), rata pe care vrem să o obținem. Puteți găsi principalele coduri valutare în tabelul de mai jos:
Monedă | Cod | | Monedă | Cod |
Dolarul australian | R01010 | Litas lituanian | R01435 | |
șilingul austriac | R01015 | cupon lituanian | R01435 | |
Manat azer | R01020 | Leul moldovenesc | R01500 | |
Liră | R01035 | РќРµРјРµС † РєР ° СЏ РјР ° СЂРєР ° | R01510 | |
Noua kwanza din Angola | R01040 | gulden olandez | R01523 | |
Dram armean | R01060 | Coroană norvegiană | R01535 | |
Rublele din Belarus | R01090 | Zlotul polonez | R01565 | |
franc belgian | R01095 | escudo portughez | R01570 | |
Leul bulgar | R01100 | RON | R01585 | |
Brazilian real | R01115 | Dolar Singapore | R01625 | |
Forint maghiar | R01135 | Dolarul Surinamului | R01665 | |
Dolar Hong Kong | R01200 | Tadjik somoni | R01670 | |
drahma greacă | R01205 | rubla tadjică | R01670 | |
Coroană daneză | R01215 | Liră turcă | R01700 | |
dolar american | R01235 | manat turkmen | R01710 | |
Euro | R01239 | Noul manat turkmen | R01710 | |
Rupie indiană | R01270 | suma uzbecă | R01717 | |
lira irlandeză | R01305 | Ucraineană grivne | R01720 | |
Coroana islandeză | R01310 | karbovaneți ucraineni | R01720 | |
peseta spaniolă | R01315 | marca finlandeza | R01740 | |
lira italiană | R01325 | francez sincer | R01750 | |
Kazahstan tenge | R01335 | Cota croată | R01760 | |
Dolarul canadian | R01350 | Krona suedeză | R01770 | |
som kârgâz | R01370 | franc elvețian | R01775 | |
Yuan chinezesc | R01375 | coroană estonă | R01795 | |
Dinarul din Kuweit | R01390 | Dinar nou iugoslav | R01804 | |
lats leton | R01405 | Africa de Sud | R01810 | |
Libaneză | R01420 | Republica Coreea a câștigat | R01815 | |
Yen japonez | R01820 |
Un ghid complet al codurilor valutare este disponibil și pe site-ul Băncii Centrale – vezi http://cbr.ru/scripts/XML_val.asp?d=0
Acum vom forma un șir de interogare într-o celulă de pe o foaie cu:
- operatorul de concatenare a textului (&) pentru a-l pune împreună;
- DESCRIERE VPR (CĂUTARE V)pentru a găsi codul monedei de care avem nevoie în director;
- DESCRIERE TEXT (TEXT), care convertește data conform modelului dat zi-lună-an printr-o bară oblică.
="http://cbr.ru/scripts/XML_dynamic.asp?date_req1="&ТЕКСТ(B2;"ДД/ММ/ГГГГ")& "&date_req2="&ТЕКСТ(B3;"ДД/ММ/ГГГГ")&"&VAL_NM_RQ="&ВПР(B4;M:N;2;0)
Pasul 2. Executați cererea
Acum folosim funcția SERVICIU WEB (SERVICIU WEB) cu șirul de interogare generat ca singur argument. Răspunsul va fi un lung șir de cod XML (este mai bine să activați încadrarea cuvintelor și să măriți dimensiunea celulei dacă doriți să o vedeți în întregime):
Pasul 3. Analizarea răspunsului
Pentru a facilita înțelegerea structurii datelor de răspuns, este mai bine să utilizați unul dintre analizatorii XML online (de exemplu, http://xpather.com/ sau https://jsonformatter.org/xml-parser), care poate formata vizual codul XML, adăugându-i indentări și evidențiind sintaxa cu culoare. Atunci totul va deveni mult mai clar:
Acum puteți vedea clar că valorile cursului sunt încadrate de etichetele noastre
Pentru a le extrage, selectați o coloană de zece (sau mai multe - dacă ați făcut cu o marjă) celule goale pe foaie (deoarece a fost setat un interval de date de 10 zile) și introduceți funcția în bara de formule FILTER.XML (FILTRUXML):
Aici, primul argument este o legătură către o celulă cu un răspuns de server (B8), iar al doilea este un șir de interogare în XPath, un limbaj special care poate fi folosit pentru a accesa fragmentele de cod XML necesare și pentru a le extrage. Puteți citi mai multe despre limbajul XPath, de exemplu, aici.
Este important ca după introducerea formulei să nu apăsați Intrați, și comanda rapidă de la tastatură Ctrl+Schimba+Intrați, adică introduceți-o ca formulă matrice (acoladele din jurul acesteia vor fi adăugate automat). Dacă aveți cea mai recentă versiune de Office 365 cu suport pentru matrice dinamice în Excel, atunci un simplu Intrați, și nu trebuie să selectați celulele goale în avans – funcția în sine va lua atâtea celule cât are nevoie.
Pentru a extrage datele, vom face același lucru – vom selecta mai multe celule goale în coloana alăturată și vom folosi aceeași funcție, dar cu o interogare XPath diferită, pentru a obține toate valorile atributelor Date din etichetele Record:
=FILTER.XML(B8;”//Înregistrare/@Data”)
Acum, în viitor, atunci când schimbați datele în celulele originale B2 și B3 sau alegeți o altă monedă din lista derulantă a celulei B3, interogarea noastră va fi actualizată automat, referindu-se la serverul Băncii Centrale pentru date noi. Pentru a forța o actualizare manual, puteți utiliza suplimentar comanda rapidă de la tastatură Ctrl+Alt+F9.
- Importați rata bitcoin în Excel prin Power Query
- Importați cursuri de schimb de pe Internet în versiuni mai vechi de Excel