Qui un esempio di quello che si potrebbe fare:
https://www.dropbox.com/scl/fi/pe76lc9qksupljlrxsth3/Download-dati-da-sito-web-per-accodare-tabelle-con-Power-Query.xlsm?rlkey=ldy9ak54l1ntccuoqqx8iyzus&dl=0
In un foglio nominato "initial_jobless_claims" ho caricato la query (a sua volta nominata allo stesso modo) che riporta le prime sei righe nella tabella (a sua volta nominata allo stesso modo della query).
Ho creato una seconda tabella nominata "initial_jobless_claims_2" dove ho, inizialmente, incollato manualmente una serie di righe.
Nel riportare i dati dal sito ho modificato il testo sostituendo il punto con la / per avere una data.
Ho creato una macro nel progetto VBA, presente nel modulo standard Modulo1 che, in pratica:
- aggiorna la tabella collegata alla query
- inserisce nella seconda tabella un numero di righe pari alla prima tabella (non si sa mai che in futuro mostrino più righe o meno righe).
- inserisce i valori presenti nella prima tabella nella seconda
- elimina i duplicati presenti nella seconda tabella
- ordina per data decrescente la seconda tabella
Questo il listato della macro:
Sub AggiornaDati()
Dim NumRighe As Long, i As Long
Dim arrValori As Variant
Dim sortRange As Range
With Application
.Calculation = xlCalculationManual
.EnableEvents = False
.ScreenUpdating = False
End With
With ThisWorkbook
With .Worksheets("initial\_jobless\_claims")
With .ListObjects("initial\_jobless\_claims")
.QueryTable.Refresh BackgroundQuery:=False
NumRighe = .ListRows.Count
arrValori = .DataBodyRange.Value2
End With
With .ListObjects("initial\_jobless\_claims\_2")
For i = 1 To NumRighe
.ListRows.Add AlwaysInsert:=True
Next i
Set sortRange = .ListColumns("Data di rilascio").DataBodyRange
.DataBodyRange(.ListRows.Count - NumRighe + 1, 1).Resize(NumRighe, .ListColumns.Count).Value = arrValori
.Range.RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5), Header:=xlYes
With .Sort
With .SortFields
.Clear
.Add Key:=sortRange, \_
SortOn:=xlSortOnValues, \_
Order:=xlDescending, \_
DataOption:=xlSortTextAsNumbers
End With
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End With
End With
With Application
.Calculation = xlCalculationAutomatic
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
La procedure potrebbe essere lanciata all'apertura della cartella di lavoro tramite l'evento WorkBook_Open.
E il file andrebbe aperto e aggiornato almeno ogni 6 giorni per evitare salti di date, pena dover inserire manualmente le date mancanti.