Microsoft Excel - Power Query - Accesso sito web cambio valute
Scenario
Vogliamo recuperare il cambio delle principali valute rispetto all'euro sul sito https://www.bancaditalia.it
I cambi sono memorizzati nella pagina https://www.bancaditalia.it/compiti/operazioni-cambi/cambio/cambi_rif_aaammgg
L'idea sarà quindi indicare la data da cui recuperare i cambi
Soluzione
Inseriamo la data nella cella B1 nel formato 'aaaammgg. È importare inserire l'apice per indicare ad Excel che stiamo inserendo un testo. Ad esempio vogliamo prendere i cambi di riferimento del 16 ottobre 2024 inseriremo '20241016.
Assegnano a questa cella il nome data_estrazione.
Accediamo ora al sito dei cambi con già una data impostata: ad esempio
https://www.bancaditalia.it/compiti/operazioni-cambi/cambio/cambi_rif_20241016/
Andiamo si Dati > Recupera dati > Da altre origini > Da Web
Inseriamo il sito
A questo punto vengono rilevate le varie tabelle presenti nella pagina web
La prima tabella è quella che ci serve Tabella dei cambi
Confermiamo con Trasforma dati.
Poiché la tabella non ha intestazioni, diamo dei nomi alle colonne: Valuta e Cambio.
Per eliminare la riga del Rublo Russo che non ha quotazione, possiamo usare i filtri sulla seconda colonna.
Il risultato è il seguente
A questo punto possiamo tipizzare la seconda colonna come valuta
Salviamo la query con Chiudi e Carica > Chiudi e carica in
Questo ci da la possibilità di salvare il risultato nello stesso foglio dove abbiamo impostato la data
Faremo quindi click sulla cella A3
Otteniamo il risultato che però non utilizza la data impostata nella cella B1
Lettura della data dalla cella B1
Modifichiamo la query facendo doppio click sulla Tabella dei cambi
Occorre fare una modifica utilizzando il linguaggio M. Per fare questo andiamo in Visualizza > Editor avanzato.
Andiamo a modificare la seconda riga che contiene un riferimento fisso
Il codice diventa il seguente
In pratica inseriamo una riga in cui andiamo a recuperare la data dalla cella B1a cui abbiamo dato il nome data_estrazione
DataRif = Excel.CurrentWorkbook(){[Name="data_estrazione"]}[Content][Column1]{0},
Ora la variabile DataRif contiene la data. La utilizziamo nella seconda riga per costruire l'URL del sito nella variabile URL
URL = "https://www.bancaditalia.it/compiti/operazioni-cambi/cambio/cambi_rif_" & DataRif,
Il questo modo la riga di accesso al sito diventa
Origine = Web.BrowserContents(URL),
Il Codice completo
let
DataRif = Excel.CurrentWorkbook(){[Name="data_estrazione"]}[Content][Column1]{0},
URL = "https://www.bancaditalia.it/compiti/operazioni-cambi/cambio/cambi_rif_" & DataRif,
Origine = Web.BrowserContents(URL),
#"Tabella estratta da HTML" = Html.Table(Origine, {{"Column1", "TABLE[id='cambi'] > * > TR > :nth-child(1)"}, {"Column2", "TABLE[id='cambi'] > * > TR > :nth-child(2)"}}, [RowSelector="TABLE[id='cambi'] > * > TR"]),
#"Rinominate colonne" = Table.RenameColumns(#"Tabella estratta da HTML",{{"Column1", "Valuta"}, {"Column2", "Cambio"}}),
#"Filtrate righe" = Table.SelectRows(#"Rinominate colonne", each ([Cambio] <> "-")),
#"Filtrate righe1" = Table.SelectRows(#"Filtrate righe", each [Valuta] <> null and [Valuta] <> ""),
#"Ordinate righe" = Table.Sort(#"Filtrate righe1",{{"Valuta", Order.Ascending}}),
#"Modificato tipo" = Table.TransformColumnTypes(#"Ordinate righe",{{"Cambio", Currency.Type}})
in
#"Modificato tipo"