Opdateret valutakurs i Excel

Jeg har gentagne gange analyseret måder at importere data til Excel fra internettet med efterfølgende automatisk opdatering. I særdeleshed:

  • I ældre versioner af Excel 2007-2013 kunne dette gøres med en direkte webanmodning.
  • Fra 2010 kan dette gøres meget bekvemt med Power Query-tilføjelsen.

Til disse metoder i de seneste versioner af Microsoft Excel kan du nu tilføje endnu en - import af data fra internettet i XML-format ved hjælp af indbyggede funktioner.

XML (eXtensible Markup Language = Extensible Markup Language) er et universelt sprog designet til at beskrive enhver form for data. Faktisk er det almindelig tekst, men med specielle tags tilføjet for at markere datastrukturen. Mange websteder tilbyder gratis streams af deres data i XML-format, som alle kan downloade. På webstedet for vores lands centralbank (www.cbr.ru), især ved hjælp af en lignende teknologi, gives data om valutakurserne for forskellige valutaer. Fra Moscow Exchange-webstedet (www.moex.com) kan du downloade kurser for aktier, obligationer og en masse anden nyttig information på samme måde.

Siden version 2013 har Excel to funktioner til direkte indlæsning af XML-data fra internettet i regnearksceller: WEBSERVICE (WEBSERVICE) и FILTER.XML (FILTERXML). De arbejder i par – først funktionen WEBSERVICE udfører en anmodning til det ønskede websted og returnerer dets svar i XML-format, og bruger derefter funktionen FILTER.XML vi "parser" dette svar i komponenter og udtrækker de data, vi har brug for, fra det.

Lad os se på driften af ​​disse funktioner ved hjælp af et klassisk eksempel - import af vekselkursen for enhver valuta, vi har brug for for et givet datointerval, fra webstedet for vores lands centralbank. Vi vil bruge følgende konstruktion som blank:

Opdateret valutakurs i Excel

Her:

  • De gule celler indeholder start- og slutdatoerne for den periode, der er af interesse for os.
  • Den blå har en rulleliste over valutaer ved hjælp af kommandoen Data – Validering – Liste (Data — Validering — Liste).
  • I de grønne celler vil vi bruge vores funktioner til at oprette en forespørgselsstreng og få serverens svar.
  • Tabellen til højre er en reference til valutakoder (vi skal bruge den lidt senere).

Lad os gå!

Trin 1. Dannelse af en forespørgselsstreng

For at få de nødvendige oplysninger fra webstedet, skal du spørge det korrekt. Vi går til www.cbr.ru og åbner linket i sidefoden på hovedsiden' Tekniske ressourcer'- Hentning af data ved hjælp af XML (http://cbr.ru/development/SXML/). Vi ruller lidt længere ned, og i det andet eksempel (eksempel 2) vil der være det, vi har brug for – at få valutakurserne for et givet datointerval:

Opdateret valutakurs i Excel

Som du kan se fra eksemplet, skal forespørgselsstrengen indeholde startdatoer (dato_req1) og slutninger (dato_req2) af perioden af ​​interesse for os og valutakoden (VAL_NM_RQ), den sats, som vi ønsker at få. Du kan finde de vigtigste valutakoder i tabellen nedenfor:

Valuta

Kode

                         

Valuta

Kode

australske dollar R01010

litauiske litas

R01435

østrigske skilling

R01015

Litauisk kupon

R01435

Aserbajdsjan manat

R01020

Moldoviske leu

R01500

Pund

R01035

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

R01510

Angolansk ny kwanza

R01040

Hollandsk gulden

R01523

Armenske dram

R01060

norske kroner

R01535

Hviderussiske rubel

R01090

Polish Zloty

R01565

belgiske franc

R01095

portugisisk escudo

R01570

Den bulgarske løve

R01100

Rumænsk leu

R01585

Brasilianske real

R01115

Singapore Dollar

R01625

Ungarske forint

R01135

Surinam dollar

R01665

Hong Kong Dollar

R01200

Tadsjikisk somoni

R01670

græsk drakme

R01205

Tadsjikisk rubel

R01670

Danske krone

R01215

Tyrkisk lira

R01700

amerikansk dollar

R01235

Turkmen Manat

R01710

euro

R01239

Ny turkmensk manat

R01710

Indiske Rupee

R01270

usbekisk sum

R01717

irske pund

R01305

Ukrainske Hryvnia

R01720

Islandsk krone

R01310

ukrainske karbovanets

R01720

spansk peseta

R01315

finsk mærke

R01740

italienske lire

R01325

fransk franc

R01750

Kasakhstan tenge

R01335

Tjekkiske koruna

R01760

Canadian Dollar

R01350

Svenske kroner

R01770

kirgisisk som

R01370

schweizisk frank

R01775

kinesiske Yuan

R01375

estiske kroon

R01795

Kuwaiti dinar

R01390

Jugoslaviske ny dinar

R01804

lettiske lats

R01405

Sydafrikanske rand

R01810

Libanesiske pund

R01420

Republikken Korea Won

R01815

japanske Yen

R01820

En komplet vejledning til valutakoder er også tilgængelig på centralbankens websted – se http://cbr.ru/scripts/XML_val.asp?d=0

Nu vil vi danne en forespørgselsstreng i en celle på et ark med:

  • tekstsammenkædningsoperatoren (&) for at sætte det sammen;
  • Funktionalitet VPR (OPLYSNING)for at finde koden for den valuta, vi har brug for, i biblioteket;
  • Funktionalitet TEKST (TEKST), som konverterer datoen efter det givne mønster dag-måned-år gennem en skråstreg.

Opdateret valutakurs i Excel

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

Trin 2. Udfør anmodningen

Nu bruger vi funktionen WEBSERVICE (WEBSERVICE) med den genererede forespørgselsstreng som eneste argument. Svaret vil være en lang række XML-kode (det er bedre at slå ordombrydning til og øge cellestørrelsen, hvis du vil se den i sin helhed):

Opdateret valutakurs i Excel

Trin 3. Parsing af svaret

For at gøre det nemmere at forstå strukturen af ​​svardataene, er det bedre at bruge en af ​​de online XML-parsere (f.eks. http://xpather.com/ eller https://jsonformatter.org/xml-parser), som visuelt kan formatere XML-kode, tilføje indrykninger til den og fremhæve syntaksen med farve. Så bliver alt meget klarere:

Opdateret valutakurs i Excel

Nu kan du tydeligt se, at kursets værdier er indrammet af vores tags ..., og datoer er attributter Dato i tags .

For at udtrække dem skal du vælge en kolonne med ti (eller flere – hvis det gøres med en margen) tomme celler på arket (fordi der er angivet et 10-dages datointerval) og indtaste funktionen i formellinjen FILTER.XML (FILTERXML):

Opdateret valutakurs i Excel

Her er det første argument et link til en celle med et serversvar (B8), og det andet er en forespørgselsstreng i XPath, et særligt sprog, der kan bruges til at få adgang til de nødvendige XML-kodefragmenter og udtrække dem. Du kan for eksempel læse mere om XPath-sproget her.

Det er vigtigt, at du ikke trykker på efter indtastning af formlen Indtast, og tastaturgenvejen Ctrl+Flytte+Indtast, dvs. indtast det som en matrixformel (de krøllede klammeparenteser omkring det tilføjes automatisk). Hvis du har den nyeste version af Office 365 med understøttelse af dynamiske arrays i Excel, så en simpel Indtast, og du behøver ikke at vælge tomme celler på forhånd – selve funktionen tager lige så mange celler, som den har brug for.

For at udtrække datoer, vil vi gøre det samme - vi vil vælge flere tomme celler i den tilstødende kolonne og bruge den samme funktion, men med en anden XPath-forespørgsel, for at få alle værdierne af Dato-attributterne fra Record-tags:

=FILTER.XML(B8;”//Record/@Dato”)

Nu i fremtiden, når du ændrer datoerne i de originale celler B2 og B3 eller vælger en anden valuta i rullelisten i celle B3, vil vores forespørgsel automatisk blive opdateret, med henvisning til centralbankens server for nye data. For at gennemtvinge en opdatering manuelt kan du desuden bruge tastaturgenvejen Ctrl+andre+F9.

  • Importer bitcoin rate til Excel via Power Query
  • Importer valutakurser fra internettet i ældre versioner af Excel

Giv en kommentar