Risolto Importare dati da numerosi file per creare un file unico speculare

peps984

Utente junior
22 Giugno 2019
25
3
Siracusa
Office 365
2
Ciao a tutti,

volevo chiedervi un consiglio per capire come sia meglio procedere per realizzare un progetto.

Si parte da un gruppo di 7-8 file excel, tutti con la stessa struttura, il cui contenuto sarà gestito da altrettante persone e saranno disponibili dentro delle cartelle di rete. Ogni file avrà al suo interno mediamente 5-6 schede con altrettante tabelle di ca.50 righe ciascuna, nessuna formula e qualche formattazione condizionale.

A partire da questi file dovrò realizzarne uno unico che avrà al suo interno tutte le righe di ognuno di quei file e che servirà come base per successive analisi (il contenuto sarà in pratica lo specchio di quello dei file di origine, non sarà mai modificato direttamente).

Il file complessivo sarà quindi costituito anch'esso da 5-6 schede con altrettante tabelle ma ognuna con ca.350-400 righe (la somma delle precedenti), con formattazioni condizionali, e sulle quali userò power pivot per realizzare alcune pivot/dashboard.

Il mio dubbio è su come realizzare questo file unico. Potrei inserire in ogni cella una semplice formula che ricopi il contenuto della corrispettiva nell'altro foglio (es. ='[File1]Foglio1'!A1) e mettere in coda tutti i file, ma così avrei un file con migliaia di formule buone solo a fare una copia, sinceramente mi sembra un metodo inutilmente complesso e macchinoso.
In alternativa pensavo ad usare power query per tenere sempre aggiornato il contenuto dei file di origine e rendere più snello il file unico, ma non so se in effetti questa sia la soluzione migliore o magari esistono altre vie.

Ho postato in questa sezione perché mi sembrava la più adatta ma chiedo scusa in anticipo se dovessi aver sbagliato

Grazie
 

klingklang

Ciappinaro VBA_Expert
Expert
20 Ottobre 2017
5.219
213
43
San Giovanni in Persiceto (BO)
www.excelswissknife.com
2016, 365
373
Ciao. In linea di massima consiglierei Power Query per consolidare i file, ma noto che hai ripetuto più volte "con formattazione condizionale"... Power Query della formattazione delle celle se ne frega altamente, e quindi non avrai nessuna formattazione nel file consolidato, a meno di ricrearla ex-post. Ma se ci devi fare sopra dei report con Power Pivot, non vedo proprio a cosa potrebbe servirti la formattazione condizionale sui dati di base
 

peps984

Utente junior
22 Giugno 2019
25
3
Siracusa
Office 365
2
Ho parlato della formattazione condizionale perché mi sembrava una variabile da considerare nel computo del peso dei file (anche se a me della formattazione condizionale applicata ai singoli file non importa nulla, sarà implementata dai singoli utenti per i loro bisogni e non necessariamente seguirà le regole del file consolidato).

Hai ragione su quello consolidato, facendo report con Power Pivot non dovrebbe servirmi, fosse per me non la userei, ma dato che oltre ai report dovrò presentare anche il file stesso so già che mi verrà richiesto ugualmente di implementarla, consapevole che in questo caso dovrò crearla ex-post
 
Ultima modifica:

ibernet

Utente junior
31 Maggio 2019
98
18
O365
4
Ciao peps984 @peps984 , ho letto di corsa e ti rispondo un po' a braccio perchè non ho molto tempo.
Penso che se puoi la soluzione migliore sarebbe quella di chiedere all'utente di premere un tasto quando chiudono il file.
Con quel tasto fai partire un export delle view in dei CSV posti su una directory esterna a cui accederai poi con PowerQuery per raccogliere ed aggregare le info.
Successivamente puoi metterli su PowerPivot e da li fare le varie viste che ti servono.
Le formattazioni le puoi applicare con delle regole in modo che agiscano sulle pivot.

Se ti serve lo script per esportare i dati in csv fai sapere che te lo giro.

Sconsiglio sempre di attaccarsi direttamente ai file excel perchè a mio avviso può essere fonte di problemi.

Cmq se hai solo un migliaio di righe puoi farti anche una routine vba che ti fa tutto, forse fai prima ^^
PowerBI la sfrutteresti meglio se avessi tanti record
 

peps984

Utente junior
22 Giugno 2019
25
3
Siracusa
Office 365
2
Ciao ibernet @ibernet ti ringrazio per il tempo che mi hai dedicato.

In effetti non avevo pensato ai CSV, anche se l'idea del tasto da premere ogni volta da parte degli utenti la vedo dura da realizzare, soprattutto per alcuni di loro.

Sconsiglio sempre di attaccarsi direttamente ai file excel perché a mio avviso può essere fonte di problemi.
La mia idea era quella di dare i file di excel in pasto a power query per poi creare il file consolidato, anche così pensi che sarebbe fonte di problemi? Sarebbe meglio in ogni caso trasformare in csv e poi importare in power query?

In tal caso, per evitare il tasto dovrei piazzare una routine vba all'interno dei singoli file che li trasforma il csv? O potrei fare qualcosa io a livello centralizzato, in modo che l'utente non si accorga o debba far nulla? (non mi interessa nascondergli cosa faccio, vorrei solo evitare l'intervento dell'utente poco pratico che fa casino)

La mole di dati finale sarà più o meno di 2500-3000 righe, divise in 5-6 tabelle

Grazie!!!
 
Ultima modifica:

ibernet

Utente junior
31 Maggio 2019
98
18
O365
4
Ti sarei grato se elaborassi su questo (s) consiglio. Che problemi vedi, oltre al possibile utilizzo concorrente del file excel da parte di più utenti?
Ciao klingklang @klingklang , l'excel se è acceduto da più utenti è pericoloso.
Gli utenti potrebbero accidentalmente modificare il lay-out, oppure potrebbero inserire dei dati non compatibili ad esempio sui numeri (punto, virgole ecc), in più può sorgere qualche problema se leggi mentre c'è dentro un utente.
Funziona tutto, non sto dicendo di no, quello che dico è che è rischioso, nel senso che potrebbero sorgere problemi nel tempo.
Non è una procedura sicura a mio avviso e per garantire la sicurezza del processo, se la costruissi io, procederei come suggerito sopra.

peps984 @peps984 Se non vuoi far premere tasti agli utenti puoi mettere la routine sull'auto close, così quando un utente chiude il file la routine parte automaticamente e l'utente non si rende conto di niente (ovviamente gli utenti devono avere le macro attivate, altrimenti la routine non partirebbe)

Questo è il codice più semplice e sicuro che conosco:
Visual Basic:
'***********************************************************************
'Creo il salvataggio del file End_Day
'Visualizzo e seleziono il tab
If Sheets("EndDay").Visible = xlSheetVeryHidden Or Sheets("EndDay").Visible = xlSheetHidden Then
    Sheets("EndDay").Visible = xlSheetVisible
End If
Sheets("EndDay").Select
    'Salvo il csv con nome fisso
    TypeError = "Save - HistTech 1^"
    ActiveSheet.SaveAs Filename:=Destinazione_HistTech & name & "_EndDay", FileFormat:=xlCSV, Local:=True
    'Salvo il csv con nome fisso + data e ora di sicurezza nel caso vada male il caricamento SQL
    TypeError = "Save - HistTech 2^"
    DataFile = "_" & Right(Date, 4) & Mid(Date, 4, 2) & Left(Date, 2)
    OraFile = "_" & Left(Time, 2) & Mid(Time, 4, 2)
    ActiveSheet.SaveAs Filename:=Destinazione_HistTech & name & "_EndDay" & DataFile & OraFile, FileFormat:=xlCSV, Local:=True
Adattalo, ho fatto copia incolla da un mio file, faccio qualche passaggio che a te sicuramente non serve..
Affinchè funzioni bene, il foglio da cui estrai i dati devrà avere i numeri senza puntini sulle migliaia.

Ovviamente se vuoi evitare il csv e vuoi attaccarti all'excel fai pure, come scritto sopra funziona comunque.
 
Ultima modifica:

peps984

Utente junior
22 Giugno 2019
25
3
Siracusa
Office 365
2
Ciao ibernet @ibernet ok grazie, darò un'occhiata al tuo codice e poi valuterò se usarlo o usare power query. Ringrazio anche klingklang @klingklang per il suo contributo e per l'aiuto
 
  • Like
Reactions: ibernet

Sostieni ForumExcel

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