Risolto Errore query web "la colonna "x" della tabella non è stata trovata"

Giannib

Nuovo utente
4 Ottobre 2016
13
3
Carlazzo, Como
Excel 2016
0
Ciao a tutti, avrei nuovamente bisogno del vostro aiuto. Ho un problema con una query web. Nell'esempio che allego, importo il calendario di un campionato di calcio, elimino alcune colonne che non mi servono, e, nella prima delle 2 colonne rimanenti, elimino tramite filtro tutti i numeri di turno presenti ("n. Round") a parte il primo che non può essere eliminato, lasciando solamente le date e gli orari. Nell'esempio la prima riga delle 2 colonne ha come valore "6. Round" e "6. Round2", che sarebbe in pratica il turno di campionato attuale. Quando, al turno successivo, vado ad aggiornare la query mi viene fuori un'errore: "la colonna x della tabella non è stata trovata", dove X è in pratica il turno precedente di campionato (in questo caso l'errore era infatti: la colonna 5. Round della tabella non è stata trovata). Il sito dal quale prelevo i dati ad ogni turno elimina il turno precedente, e nell'importazione si crea questo errore. Capisco l'errore dal punto di vista logico (la query non trova più quel valore e restituisce l'errore), ma non sapendo che fare ho cancellato la query e la tabella e le ho create da capo, però al prossimo turno di campionato avrò lo stesso problema. C'è qualcosa che posso fare per evitare di cancellare e ricreare la query ogni volta? Grazie.
 

Allegati

giulianovac

Access/VBA Expert
Expert
9 Giugno 2018
2.702
83
Italy
2013 2019
193
Dubito, visto che dal sito cancellano la colonna precedente.
Teoricamente: dovresti essere TU a 'tenere in canna' la colonna precedente (immagino in un foglio a parte) e dopo aver acquisito i dati dal sito, indicare il riferimento di quella colonna.

Ma ho scritto teoricamente, perché non ho tempo di studiare il tuo progetto.
 

klingklang

Ciappinaro VBA_Expert
Expert
20 Ottobre 2017
5.239
213
43
San Giovanni in Persiceto (BO)
www.excelswissknife.com
2016, 365
376
Ciao. Referenziare la colonna per indice (quindi svincolandosi dal nome) richiede un po' di codice M da scrivere manualmente, ma si può fare. Se ho capito bene, tu vuoi escludere tutte le righe che nella prima colonna contengono "Round". Lo puoi fare scrivendo il passaggio del filtro (l'ultimo della tua query) in questo modo:

M (Power Query):
= Table.SelectRows(
    #"Rimosse colonne",
    each not Text.Contains(
        Record.Field(_, Table.ColumnNames(#"Rimosse colonne"){0}),
        "Round"
    )
)
Ti allego il risultato. Ma è questo l'output che desideri? Con gli spazi vuoti sotto ogni data?
Fammi sapere Saluto_saluto
 

Allegati

Giannib

Nuovo utente
4 Ottobre 2016
13
3
Carlazzo, Como
Excel 2016
0
Ti allego il risultato. Ma è questo l'output che desideri? Con gli spazi vuoti sotto ogni data?
Fammi sapere Saluto_saluto
Ciao klingklang @klingklang , grazie per la risposta, l'output va bene così, devo solo provare con il codice che mi hai scritto sopra se l'errore non si presenta più. Domani dovrei riuscire a provarlo e ti faccio sapere. Grazie anche a giulianovac @giulianovac per la risposta. A presto.
 

Giannib

Nuovo utente
4 Ottobre 2016
13
3
Carlazzo, Como
Excel 2016
0
Allora, klingklang @klingklang , ho fatto una prova con la modifica consigliata da te ma ho sempre lo stesso errore. Penso però di aver risolto in un altro modo, utilizzando semplicemente la funzione "Usa intestazioni come prima riga", che trasforma le prime righe delle colonne in "Column 1", "Column 2" e via dicendo. Lo sto ancora testando, ma fino ad ora è l'unico modo in cui non ho l'errore e non devo cancellare e rifare la query da capo. Vi aggiorno entro domenica perché ho diversi file da testare, spero sia la strada giusta.
 

klingklang

Ciappinaro VBA_Expert
Expert
20 Ottobre 2017
5.239
213
43
San Giovanni in Persiceto (BO)
www.excelswissknife.com
2016, 365
376
Ciao, mi sembra strano quello che dici, poiché la query che ti ho dato a questo punto è completamente svincolata dai nomi delle colonne (ti metto qui il codice completo, e come vedrai non c'è traccia di riferimento a nomi di colonne, se non nello step di eliminazione, ma quei nomi non dovrebbero cambiare mai). In ogni caso, anche la tua idea è buona e sicuramente può funzionare Saluto_saluto

M (Power Query):
let
    Origine = Web.Page(Web.Contents("https://www.betexplorer.com/soccer/scotland/premiership/fixtures/")),
    Data0 = Origine{0}[Data],
    #"Rimosse colonne" = Table.RemoveColumns(Data0,{"", "B's", "1", "X", "2"}),
    #"Filtrate righe" = Table.SelectRows(#"Rimosse colonne", each not Text.Contains(Record.Field(_, Table.ColumnNames(#"Rimosse colonne"){0}), "Round"))
in
    #"Filtrate righe"
 

Giannib

Nuovo utente
4 Ottobre 2016
13
3
Carlazzo, Como
Excel 2016
0
Ciao, io ho provato con un altro campionato ma con le stesse istruzioni che mi hai scritto sopra per la query, e l'errore è venuto fuori nuovamente. Ipotizzo, da perfetto ignorante di query, ma come semplice autodidatta, che le intestazioni di colonna come nel file che ho allegato al primo post (uguali anche nel file riproposto da te) non debbano proprio contenere nessun numero di "round", perché come spiegato, facendo riferimento al file allegato, nel campionato scozzese hanno disputato il 6° round e il prossimo weekend giocheranno il'7°, quando aggiornerò la query nel link https://www.betexplorer.com/soccer/scotland/premiership/fixtures/ non sarà più presente il 7° round (che però è l'intestazione delle 2 colonne attuali) ma l'8° round. L'errore secondo me sta lì, ripeto, ipotizzo solamente, e comunque a questo punto, per fugare ogni dubbio aspetto questo sabato dopo che si giocano le partite per aggiornare anche la query nel file allegato. Spero di non aver creato maggiore confusione :piango:Ti ringrazio per la disponibilità.
 

klingklang

Ciappinaro VBA_Expert
Expert
20 Ottobre 2017
5.239
213
43
San Giovanni in Persiceto (BO)
www.excelswissknife.com
2016, 365
376
Avresti ragione se nella query si facesse riferimento da qualche parte al nome delle colonne es. "7° round", ma non è così, tanto è vero che, se prendi il tuo file iniziale dove c'era il 6° round e lo aggiorni con la query da me proposta, non vi sono errori. Applicandola a un'altra tabella può darsi che sia venuto fuori qualcos'altro: io mi limito a commentare per quello che ho visto nel tuo file Saluto_saluto
 

Giannib

Nuovo utente
4 Ottobre 2016
13
3
Carlazzo, Como
Excel 2016
0
Ciao klingklang @klingklang , logicamente avevi ragione tu, non so cosa ho combinato, comunque ho riprovato con il campionato francese che oggi giocava l'intero 7° turno e ha funzionato quel codice che mi hai scritto sopra, quindi ti ringrazio tantissimo per l'aiuto che mi hai dato per risolvere il problema. Grazie, grazie, e ancora grazie. Metto il risolto nella discussione. Ciao e alla prossima. ???
 
  • Like
Reactions: klingklang

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!