Download dati da sito web per accodare tabelle con Power Query

Anonimo
2023-12-14T17:27:32+00:00

Buonasera, in allegato il file dove spiego cosa vorrei fare. Se ci fosse una soluzione alternativa a quella che ho descritto la prendo, ovviamente, in considerazione. Poiché i dati che vorrei gestire sono diversi ho l'esigenza di automatizzare il più possibile e con il comando "aggiorna" delle query riesco a farlo. In breve:

  1. dal sito, il cui link è nel file excel, riesco a scaricare con la query solo la 1° tabella con 6 righe;
  2. nel sito ci sono altre righe, con la stessa formattazione della tabella n° 1, che non mi fa scaricare
  3. queste righe, che ho fissato in 18, le copio ed incollo manualmente in excel e le converto in tabella n° 2
  4. con la query accodo le due tabelle in ordine: tabell1 come prima tabella e tabella 2 come seconda, seguendo le date della prima colonna di entrambe le tabelle.

Il problema nasce quando devo fare l'aggiornamento, in quanto nella prima tabella il sito inserisce il nuovo dato nella prima riga della mia 1° tabella ed elimina la 6° riga sempre dalla mia 1° tabella. Onde evitare di fare sempre un copia ed incolla, come nel punto 3), vorrei trovare una soluzione come descritto nel file excel.

Grazie mille per l'aiuto

ScaricoDatieAccodaTabelle.xlsx

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2023-12-20T11:29:47+00:00

Oh, evviva!

Mi sembrava impossibile che non riuscissi ad ottenere i medesi risultati.

Speriamo continui così.

Buon lavoro per la costruzione di tutto il resto :-)

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2023-12-20T10:16:05+00:00

Adesso sembra andare.

Ho provato dal file che hai condiviso e scaricato su PC con Excel 2013.

Ho formattato le due tabelle (in una ho messo il formato % e nell'altra il formato numero per le colonne dei valori).

Ho cancellato i dati e sono partito da questa situazione (ho anche aggiunto un grafico tanto per provare):

ho aggiornato i dati e ho ottenuto:

Ti metto il link al file utilizzato con Excel 2013: https://www.dropbox.com/scl/fi/n4difq99zp2mn9oq09ub3/Download-dati-da-sito-web-per-accodare-tabelle-con-Power-Query-5-scaricato.xlsm?rlkey=6t6fxw01ll7zr6xnv1o8z9xke&dl=0

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

65 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2023-12-17T12:30:53+00:00

    Utilizzando un po' di "metodo" potresti avere un'unica procedura "AggiornaDati" in base al nome del foglio a cui associare il nome della tabella di partenza ed, eventualmente, alla query da cui prelevare i dati.

    Naturalmente se i dati fossero da inserire un'unica cartella di lavoro.

    Ma nel caso, aspetto da vedere successivamente :-)

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-12-17T12:07:50+00:00

    Casanmaner, innanzitutto grazie mille. Adesso sono fuori sede. Domani lo provo e poi posto qua. Il dato in questione esce ogni settimana e quindi anche il relativo aggiornamento deve avvenire ogni settimana. Proverò anche con altri dati dello stesso sito internet che possono avere, generalmente, cadenza mensile. Il mio intento era quello di creare diverse dashboard con diversi indicatori, come quello dell'esempio, che si potessero aggiornare, tramite download, automaticamente. Grazie per adesso. Ti farò sapere.

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-12-17T11:54:04+00:00

    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.

    La risposta è stata utile?

    0 commenti Nessun commento