Domanda Collegare ed aggiornare due file

Flavio_buccia

Utente junior
Original poster
20 Dicembre 2020
40
0
6
2019
ciao a tutti, spero di spiegarmi bene...
vorrei collegare due file Excel
origine e selezione (i nomi dei file)
il primo (origine) sarà quello che verrà aggiornato e che conterrà molti dati
il secondo (selezione) sarà quello dove vorrei collegare solo alcuni dati del file origine, e vorrei che quando il primo file (origine) verrà aggiornato, (quindi possono essere tolte oppure aggiunte o modificate alcune righe)
il secondo file (selezione) mi aggiorni le righe che ho deciso di collegare.
in allegato i due file di esempio
grazie
 

Allegati

  • prove.rar
    14.8 KB · Visualizzazioni: 8

Enea

Utente assiduo
3 Settembre 2019
2,887
611
145
Nord Milano
Excel 2013
ciao
la soluzione con power query ti consente di lasciare il file Origine su disco e operare dal file selezione secondo le tue necessità
Data.Column1Data.Column2Data.Column3Data.Column4
ACCBLIACCENDIGAS BLITZY PIEZOELETTRI8003913001609
4,2​
ACCCANACCESSORIO CANNELLONI MARCATO8000011000145
21,5​
ACCCAPMARACCESSORIO CAPELLINI ATLAS8000011000091
15,7​
ACCCAPMAACCESSORIO CAPELLINI ATLAS8000011000091
855​
ACCECOACCENDIFUOCO GRIGLISTA ECOLOGI8013346000452
0,6​
ACCFLE13117ACCENDIGAS FLEX 131173661075120863
1,4​
ACCFLE24376ACCENDIGAS FLEX 243768056039373761
1,4​
ACCKIKACCENDIGAS KIKO CON ACCENDINO8003913004501
1,9​
ACCLASACCENDIGAS LASER CON PILA8003913001807
10,2​
ACCLAACCENDIGAS LASER CON PILA8003913001807
10,2​

Il codice
M Power Query:
// Foglio1
let
    Origine = Excel.Workbook(File.Contents("C:\Users\piva\Downloads\origine.xlsx"), null, true),
    #"Tabella Data espansa" = Table.ExpandTableColumn(Origine, "Data", {"Column1", "Column2", "Column3", "Column4"}, {"Data.Column1", "Data.Column2", "Data.Column3", "Data.Column4"}),
    #"Rimosse altre colonne" = Table.SelectColumns(#"Tabella Data espansa",{"Data.Column1", "Data.Column2", "Data.Column3", "Data.Column4"}),
    #"Modificato tipo" = Table.TransformColumnTypes(#"Rimosse altre colonne",{{"Data.Column3", type text}})
in
    #"Modificato tipo"
 

Flavio_buccia

Utente junior
Original poster
20 Dicembre 2020
40
0
6
2019
Grazie per la risposta, direi che ci siamo quasi...ho provato a collegare con PQ e fa quello che vorrei, pero mi importa tutto...
come faccio ad importare solo le righe che mi interessano? sempre se è possibile...
grazie
 

Enea

Utente assiduo
3 Settembre 2019
2,887
611
145
Nord Milano
Excel 2013
Ciao
Il concetto è leggermente diverso...
In pq punti ai dati registrati sul file
Con gli altri comandi es. Filtro, raggruppa, rimuovi colonne ecc. Componi il report che analizza e risolve il tuo problema...
chiudi e carica come tabella
 

lukereds

Excel/VBA Expert
Staff
17 Luglio 2018
6,769
1,057
245
Milano
www.formazione-milano.net
2013, 2016, Ol
ciao,
premesso che la soluzione di Enea @Enea (ciao) a mio parere sarebbe da preferire, se vuoi usare solo formule potresti mettere una colonna in "origine" che indica quali sono le righe che ti interessa prelevare
Ad es in colonna E metti una "x" se vuoi prelevare quella riga, allora in A1 di "selezione" scrivi, e trascini in basso ed a dx

=SE.ERRORE(INDICE([origine.xlsx]Foglio1!A$1:A$10;AGGREGA(15;6;RIF.RIGA($A$1:$A$20)/([origine.xlsx]Foglio1!$E$1:$E$10="x");RIF.RIGA($A1)));"")

Formula da verificare però se ci sono decine di migliaia di righe o più
 

Flavio_buccia

Utente junior
Original poster
20 Dicembre 2020
40
0
6
2019
grazie, ma ci sono migliaia di righe, e non riesco a farlo funzionare...
grazie a tutti...

ps
ma se io (cioè voi) sapendo che righe mi servono... potrebbe esser possibile indicarle in una formula, indicando il codice presente nella colonna A (univoco)
esempio .... voglio estrarre e collegare le righe ACCCAN , ACCFLE24376, con i relativi valori nelle colonne B,C,D...
sempre se è possibile...
altrimenti faccio come ho fatto fino ad adesso...li aggiorno manualmente...
Grazie
 

Flavio_buccia

Utente junior
Original poster
20 Dicembre 2020
40
0
6
2019
come decidi se una riga ti serve o no? devi scorrere tutte le n mila righe giusto?
Io so, che righe mi serve collegare, il problema mi sorge perché, se uso la classica formula =[nome_file.xlsm]nome_foglio!$B$28
quando aggiorno il file n1, i riferimenti cambiano, perche vengono aggiunte alcune righe e tolte altre...
cosi pensavo che, dichiarando in una formula il codice esatto (nella colonna A) si potesse rendere tutto un po più semplice....
scusate se vi creo problemi
 

lukereds

Excel/VBA Expert
Staff
17 Luglio 2018
6,769
1,057
245
Milano
www.formazione-milano.net
2013, 2016, Ol
scusate se vi creo problemi
ma siam qui apposta dai
Qual'è la chiave univoca che identifica una riga? i codici in colonna C?
PS: comunque ci vuole il Vba o le power query... con le formule se cancelli una riga da origine, presente anche in "selezione", rimarrebbe una riga di errore, esempio:

metti il codice In colonna C di selezione in col.A, poi in B1 scrivi, confermi con ctrl shift enter e trascini in basso

=INDICE([origine.xlsx]Foglio1!A$1:A$10;PICCOLO(SE($A1=[origine.xlsx]Foglio1!$C$1:$C$10;RIF.RIGA([origine.xlsx]Foglio1!A$1:A$10));1))

Rimane il problema delle righe cancellate
nel file origine
 
Ultima modifica:

Enea

Utente assiduo
3 Settembre 2019
2,887
611
145
Nord Milano
Excel 2013
ciao
è ipotizzabile da parte tua la creazione di un elenco di codici da controllare?
Se si saranno due query (con PQ) una che punta al database su disco ed una alla tua tabella pilota >>>il merge tra le due darà origine alla tua tabella da controllare.
 

Flavio_buccia

Utente junior
Original poster
20 Dicembre 2020
40
0
6
2019
Ho allegato il due file, naturalmente ho messo meno righe ed ho selezionato nel file selezione qualche voce....il codice univoco è quello nella colonna D...
spero che qualcuno ci riesca senza dannarsi troppo.
Grazie a tutti, siete gentilissimi.
 

Allegati

  • esempio.rar
    28.8 KB · Visualizzazioni: 1

Enea

Utente assiduo
3 Settembre 2019
2,887
611
145
Nord Milano
Excel 2013
ciao

nel foglio parametri
devi inserire il path completo del tuo file Origine
Nella tabella sottostante elenchi solo i codici da controllare
Poi nel foglio report selezioni una cella e con il pulsante destro del mouse scegli Aggiorna

DirInElab
C:\Users\piva\Downloads\origineInElab.xlsx
CodPilota
AG12539
AG1362BO
AG1381
AG14106
AG1474BO
AG155185
AG155511
AG167338

Il codice
M Power Query:
// DaControllare
let
    Origine = Excel.CurrentWorkbook(){[Name="Tabella1"]}[Content],
    #"Modificato tipo" = Table.TransformColumnTypes(Origine,{{"CodPilota", type text}})
in
    #"Modificato tipo"

// OrigineInElab
// InElab
let
    Origine0=Excel.CurrentWorkbook(){[Name="DirInElab"]}[Content][Column1]{0},   
    Origine = Excel.Workbook(File.Contents(Origine0), null, true),
    #"Rimosse altre colonne" = Table.SelectColumns(Origine,{"Data"}),
    #"Tabella Data espansa" = Table.ExpandTableColumn(#"Rimosse altre colonne", "Data", {"Column1", "Column2", "Column3", "Column4", "Column5"}, {"Column1", "Column2", "Column3", "Column4", "Column5"})
in
    #"Tabella Data espansa"

// Report
let
    Origine = Table.NestedJoin(DaControllare,{"CodPilota"},OrigineInElab,{"Column4"},"OrigineInElab",JoinKind.LeftOuter),
    #"Tabella OrigineInElab espansa" = Table.ExpandTableColumn(Origine, "OrigineInElab", {"Column1", "Column2", "Column3", "Column5"}, {"Column1", "Column2", "Column3", "Column5"}),
    #"Riordinate colonne" = Table.ReorderColumns(#"Tabella OrigineInElab espansa",{"Column1", "Column2", "Column3", "CodPilota", "Column5"})
in
    #"Riordinate colonne"
 

Allegati

  • ReportPQ.xlsx
    21.8 KB · Visualizzazioni: 2