Opgedateerde wisselkoers in Excel

Ek het herhaaldelik maniere ontleed om data vanaf die internet in Excel in te voer met daaropvolgende outomatiese opdatering. In die besonder:

  • In ouer weergawes van Excel 2007-2013 kan dit met 'n direkte webversoek gedoen word.
  • Vanaf 2010 kan dit baie gerieflik gedoen word met die Power Query-byvoeging.

By hierdie metodes in die jongste weergawes van Microsoft Excel, kan jy nou nog een byvoeg – die invoer van data vanaf die internet in XML-formaat deur gebruik te maak van ingeboude funksies.

XML (eXtensible Markup Language = Extensible Markup Language) is 'n universele taal wat ontwerp is om enige soort data te beskryf. Trouens, dit is gewone teks, maar met spesiale etikette wat daarby gevoeg is om die datastruktuur te merk. Baie werwe bied gratis strome van hul data in XML-formaat vir enigiemand om af te laai. Op die webwerf van die Sentrale Bank van Ons Land (www.cbr.ru), veral, met behulp van 'n soortgelyke tegnologie, word data oor die wisselkoerse van verskillende geldeenhede gegee. Van die Moscow Exchange-webwerf (www.moex.com) kan jy op dieselfde manier kwotasies vir aandele, effekte en baie ander nuttige inligting aflaai.

Sedert weergawe 2013 het Excel twee funksies om XML-data direk vanaf die internet in werkbladselle te laai: WEBDIENS (WEBSERVICE) и FILTER.XML (FILTERXML). Hulle werk in pare – eers die funksie WEBDIENS voer 'n versoek na die verlangde webwerf uit en gee sy antwoord in XML-formaat terug, en gebruik dan die funksie FILTER.XML ons "ontleed" hierdie antwoord in komponente, en onttrek die data wat ons benodig daaruit.

Kom ons kyk na die werking van hierdie funksies deur 'n klassieke voorbeeld te gebruik – die invoer van die wisselkoers van enige geldeenheid wat ons benodig vir 'n gegewe datuminterval vanaf die webwerf van die Sentrale Bank van Ons Land. Ons sal die volgende konstruksie as 'n leegte gebruik:

Opgedateerde wisselkoers in Excel

hier:

  • Die geel selle bevat die begin- en einddatums van die tydperk wat vir ons van belang is.
  • Die blou een het 'n aftreklys van geldeenhede wat die opdrag gebruik Data – Bekragtiging – Lys (Data — Bekragtiging — Lys).
  • In die groen selle sal ons ons funksies gebruik om 'n navraagstring te skep en die bediener se reaksie te kry.
  • Die tabel aan die regterkant is 'n verwysing na geldeenheidkodes (ons sal dit 'n bietjie later nodig hê).

Kom ons gaan!

Stap 1. Vorm 'n navraagstring

Om die vereiste inligting van die webwerf te kry, moet jy dit korrek vra. Ons gaan na www.cbr.ru en maak die skakel in die voetskrif van die hoofblad oop' Tegniese Hulpbronne'- Kry data met behulp van XML (http://cbr.ru/development/SXML/). Ons blaai 'n bietjie laer en in die tweede voorbeeld (Voorbeeld 2) sal daar wees wat ons nodig het - om die wisselkoerse vir 'n gegewe datuminterval te kry:

Opgedateerde wisselkoers in Excel

Soos u uit die voorbeeld kan sien, moet die navraagstring begindatums bevat (datum_req1) en eindes (datum_req2) van die tydperk van belang vir ons en die geldeenheid kode (VAL_NM_RQ), die koers waarvan ons wil kry. U kan die belangrikste geldeenheidkodes in die tabel hieronder vind:

Geld

kode

                         

Geld

kode

Australiese dollar R01010

Litaus litas

R01435

Oostenrykse sjieling

R01015

Litaus koepon

R01435

Aserbeidjans manat

R01020

Moldawiese leu

R01500

Pound

R01035

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

R01510

Angolese nuwe kwanza

R01040

Nederlandse gulden

R01523

Armeense Dram

R01060

Noorse kroon

R01535

Wit-Russiese roebel

R01090

Inval Zloty

R01565

Belgiese frank

R01095

Portugese escudo

R01570

Die Bulgaarse Leeu

R01100

Roemeense leu

R01585

Brasiliaanse ware

R01115

Singapoer dollar

R01625

Hongaarse forint

R01135

Surinaamse dollar

R01665

Hong Kong Dollar

R01200

Tadjiekse somoni

R01670

Griekse drachme

R01205

Tadjiekse roebel

R01670

Deense kroon

R01215

Turkse lire

R01700

Amerikaanse dollar

R01235

Turkmeense manat

R01710

Euro

R01239

Nuwe Turkmeense manat

R01710

Indiese rupee

R01270

Oezbeekse som

R01717

Ierse pond

R01305

Oekraïens grivna

R01720

Yslandse kroon

R01310

Oekraïens karbovanets

R01720

Spaanse peseta

R01315

Finse merk

R01740

Italiaanse lira

R01325

Franse frank

R01750

Kasakstan tenge

R01335

Tsjeggiese koruna

R01760

Kanadese Dollar

R01350

Sweedse kroon

R01770

Kirgisiese som

R01370

Switserse frank

R01775

Chinese Yuan

R01375

Estlandse kroon

R01795

Koeweitse dinar

R01390

Joego-Slawiese nuwe dinar

R01804

Lettiese lats

R01405

Suid-Afrikaanse rand

R01810

Libanese pond

R01420

Republiek van Korea gewen

R01815

Japanese Yen

R01820

'n Volledige gids tot geldeenheidkodes is ook beskikbaar op die Sentrale Bank-webwerf – sien http://cbr.ru/scripts/XML_val.asp?d=0

Nou sal ons 'n navraagstring in 'n sel op 'n blad vorm met:

  • die teksaaneenskakelingsoperateur (&) om dit saam te stel;
  • Kenmerke VPR (VERSOEKING)om die kode van die geldeenheid wat ons benodig in die gids te vind;
  • Kenmerke TEKS (TEKS), wat die datum omskakel volgens die gegewe patroon dag-maand-jaar deur 'n skuinsstreep.

Opgedateerde wisselkoers in Excel

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

Stap 2. Voer die versoek uit

Nou gebruik ons ​​die funksie WEBDIENS (WEBSERVICE) met die gegenereerde navraagstring as die enigste argument. Die antwoord sal 'n lang lyn XML-kode wees (dit is beter om woordomhulsel aan te skakel en die selgrootte te vergroot as jy dit in sy geheel wil sien):

Opgedateerde wisselkoers in Excel

Stap 3. Ontleding van die antwoord

Om dit makliker te maak om die struktuur van die responsdata te verstaan, is dit beter om een ​​van die aanlyn XML-ontleders te gebruik (byvoorbeeld, http://xpather.com/ of https://jsonformatter.org/xml-parser), wat XML-kode visueel kan formateer, inkepings daarby kan voeg en die sintaksis met kleur uitlig. Dan sal alles baie duideliker word:

Opgedateerde wisselkoers in Excel

Nou kan jy duidelik sien dat die kursuswaardes deur ons etikette omraam word ..., en datums is eienskappe datum in etikette .

Om hulle te onttrek, kies 'n kolom van tien (of meer - indien gedoen met 'n kantlyn) leë selle op die blad (omdat 'n 10-dae datuminterval gestel is) en voer die funksie in die formulebalk in FILTER.XML (FILTERXML):

Opgedateerde wisselkoers in Excel

Hier is die eerste argument 'n skakel na 'n sel met 'n bedienerrespons (B8), en die tweede is 'n navraagstring in XPath, 'n spesiale taal wat gebruik kan word om toegang tot die nodige XML-kodefragmente te verkry en dit te onttrek. Jy kan meer oor die XPath-taal lees, byvoorbeeld hier.

Dit is belangrik dat jy nie druk nadat jy die formule ingevoer het nie Tik, en die sleutelbordkortpad Ctrl+Skuif+Tik, dws voer dit as 'n skikkingsformule in (die krulhakies daaromheen sal outomaties bygevoeg word). As jy die nuutste weergawe van Office 365 het met ondersteuning vir dinamiese skikkings in Excel, dan is 'n eenvoudige Tik, en jy hoef nie leë selle vooraf te kies nie – die funksie self sal soveel selle neem as wat dit nodig het.

Om datums te onttrek, sal ons dieselfde doen - ons sal verskeie leë selle in die aangrensende kolom kies en dieselfde funksie gebruik, maar met 'n ander XPath-navraag, om al die waardes van die Datum-kenmerke van die Rekord-etikette te kry:

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

Nou in die toekoms, wanneer die datums in die oorspronklike selle B2 en B3 verander word of 'n ander geldeenheid in die aftreklys van sel B3 gekies word, sal ons navraag outomaties opgedateer word, met verwysing na die Sentrale Bank-bediener vir nuwe data. Om 'n opdatering handmatig af te dwing, kan jy ook die sleutelbordkortpad gebruik Ctrl+alt+F9.

  • Voer bitcoin-koers na Excel in via Power Query
  • Voer wisselkoerse van die internet af in ouer weergawes van Excel

Lewer Kommentaar