Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Estrazione dati da più file Excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Estrazione dati da più file Excel

Postdi replymonster » 12/12/18 14:46

Buonasera a tutti,

vi pongo il seguente quesito rispetto ad una problematica di estrazione dati da più file Excel.
In allegato presento tre file (saranno molti di più) in cui osserviamo come siano relazionate tramite una chiave.
Nello specifico nel primo file troviamo le seguenti variabili (denominato File1):
ID Paziente; Nome; Cognome; Sesso; Altezza
Nel secondo file (denominato File2):
ID Paziente; Diabete; Fumo; Familiarità; ID Medico curante
Nel terzo file (denominato File3):
ID Medico curante; Nome Medico; Cognome Medico; Sede

Io volevo realizzare un file Excel (denominato File_estrazione) che è organizzato in due parti:
La prima in cui c'è la lista di variabili (ID Paziente; Nome; Cognome; Sesso; Altezza; Diabete; Fumo; Familiarità; ID Medico curante; Nome Medico; Cognome Medico; Sede) ordinati per riga e accanto due colonne dove troviamo si/no (se si vuole importare o meno quel dato) ed un altra in cui si può decidere di filtrare/eliminare i dati.
Osserviamo nell'esempio come vengono riportati gli attributi in cui è indicato 'si' e scartati quelli in cui è indicato 'no', e vengono estratti solamente due pazienti che soddisfano i filtri attivi (Sesso=M; Diabete=si; Sede=X).

Io sono indeciso se intanto spezzare in due il processo o mantenere tutto in una macro.
Per spezzare il processo intendo: prima si va ad estrarre tutti i dati di tutti i pazienti rispettando i 'si' e 'no' degli attributi, poi si va ad applicare i filtri e ad eliminare i pazienti superflui (in questo casso tutti quelli di sesso femminile ad esempio).
Ho pensato di fare tutti cerca verticali che entrano nei vari file ed estraggono i dati inserendo una condizioni in cui se in C2 c'è 'si' allora estrai se c'è 'no' non fare nulla. Il problema è che penso risulti troppo pesante e quindi forse è meglio se si imposti una macro.

Per concludere vorrei avere un vostro parere, per conoscere se esistono metodi più efficaci ma sopratutto più sostenibili in quanto dovrò gestire 70 tabelle con oltre 60 mila pazienti e 700 variabili, per cui utilizzare le formule non penso sia plausibile. Il risultato deve essere una piacevole estrazione dei dati desiderati con la possibilità di filtraggio.

Ecco il link dei file zippati --> http://www.filedropper.com/file_446

Grazie a tutti per la cortese attenzione,
Saluti
replymonster
Utente Junior
 
Post: 30
Iscritto il: 06/11/17 11:45

Sponsor
 

Re: Estrazione dati da più file Excel

Postdi klingklang » 12/12/18 15:11

Ciao, dalla tua descrizione delle basi dati e del risultato finale che devi ottenere, credo innanzi tutto che excel non sia lo strumento più idoneo (meglio sarebbe un Database relazionale). Volendo usare Excel a tutti i costi, tenere le basi dati così frammentate è un suicidio... con una tabella monolitica (una sola tabella con tutte le variabili per ogni id paziente) l'estrazione si potrebbe fare anche con una tabellina come quella da te ipotizzata, con una macro ma anche con "semplici" formule.
Enrico
Windows 7 + Office 2016 64bit / Windows 10 + Office 365 32/64bit
Avatar utente
klingklang
Utente Junior
 
Post: 97
Iscritto il: 23/11/18 15:01
Località: San Giovanni in Persiceto

Re: Estrazione dati da più file Excel

Postdi replymonster » 12/12/18 15:20

Condivido che probabilmente non sia proprio lo strumento più adatto.
Detto ciò, mi stai quindi consigliando di andare a 'semplificare' la frammentazione di dati per poi andare ad agire su molte meno tabelle? Considerando che questa possa essere assolutamente una prima soluzione, e riesca a ridurre notevolmente il numero di tabelle (che comunque presenteranno lo stesso numero di variabili ma più presenti, e quindi in meno file totali) come vai ad agire per l'estrazione?

Grazie

EDIT: Studiando attentamente il DB alla fine risulta che le tabelle sono una settantina, ma la maggior parte di esse sono praticamente vuote, riducendo quindi il tutto a una decina di tabelle veramente piene (con migliaia di righe e decine di attributi)
replymonster
Utente Junior
 
Post: 30
Iscritto il: 06/11/17 11:45

Re: Estrazione dati da più file Excel

Postdi replymonster » 12/12/18 15:42

Riflettendoci penso che la massima performance si possa ottenere scrivendo una macro in cui:
1. Determina dove sono presenti tutte le variabili, ovvero in quale file sono collocate (scrivendo in delle celle questi collegamenti che la macro andrà a leggere)
2. Estrae solamente gli ID Pazienti che hanno le caratteristiche specificate sotto filtro. Nel nostro esempio estrarrebbe tutti i pazienti che sono di sesso Maschile, Diabetici e con sede 'X'.
3. Procede andando ad estrarre (rispetto i 'si' della colonna import) tutti i restanti dati, aprendo tutti i file corretti e ed estraendo i dati dei pazienti, aggiungendoli come attributi nel file principale.

Esiste la possibilità di utilizzare una Macro Excel per far aprire file esterni?

Grazie
replymonster
Utente Junior
 
Post: 30
Iscritto il: 06/11/17 11:45

Re: Estrazione dati da più file Excel

Postdi klingklang » 12/12/18 15:59

replymonster ha scritto:Esiste la possibilità di utilizzare una Macro Excel per far aprire file esterni?

Sì, esiste. Qui però ci muoviamo sul confine del "lavoro completo su commissione", per il quale non so quale sia esattamente la policy di questo forum, frequentandolo da poco... attendiamo un parere dei moderatori
Enrico
Windows 7 + Office 2016 64bit / Windows 10 + Office 365 32/64bit
Avatar utente
klingklang
Utente Junior
 
Post: 97
Iscritto il: 23/11/18 15:01
Località: San Giovanni in Persiceto

Re: Estrazione dati da più file Excel

Postdi replymonster » 12/12/18 16:02

Mi sto adoperando per scrivere la Macro, vediamo che esce !!
replymonster
Utente Junior
 
Post: 30
Iscritto il: 06/11/17 11:45

Re: Estrazione dati da più file Excel

Postdi Anthony47 » 13/12/18 01:15

Non abbiamo regole che vietano lo sviluppo di soluzioni belle e pronte, anche se spesso io per le applicazioni non proprie hobbistiche suggerisco di rivolgersi a un professionista così si fa pure girare l'economia.

Nel caso prospettato, io suggerirei piu' un assemblaggio dei vari file in un unico tabellone (a spanne mi pare che verrebbero 60mila righe per 70-80 colonne); poi da questo tabellone, tramite filtro automatico (che puo' essere anche automatizzato e gestito tramite un'interfaccia diversa da quella standard excel), si estraggono i dati di interesse.
Secondo me sarebbe molto piu' veloce che aprire di volta in volta 70 file e spazzolarli alla ricerca dei dati cercati.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17231
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Estrazione dati da più file Excel

Postdi replymonster » 13/12/18 11:58

Buongiorno Anthony, grazie inanzitutto per il tuo intervento.

Devo aggiungere due risvolti importanti che andranno a modificare lo stato attuale della situzione:
1. I file veramente pesanti e pieni di dati sono esclusivamente una decina
2. Alcuni di questi file però, non hanno relazioni univoche

Mi spiego meglio rispetto il secondo punto utilizzando un esempio. Uno di questi file, come introdotto nel primo post, riguarda le informazioni generali dei pazienti dove gli viene assegnato un ID. Un'altro file che non ho introdotto, è ad esempio una relazione tra pazienti e farmaci ed è così composto: ID Paziente; Nome_Farmaco.
Questo significa che se un paziente ha assegnati due farmaci, noi leggeremo lo stesso ID Paziente ripetuto due volte, con accanto nella prima riga il nome di un farmaco e nella seconda riga un differente farmaco. Adesso, il desiderio di un medico sarebbe quello di poter selezionare uno dei 500 farmaci presenti ed estrarre i pazienti a cui è stato assegnato.
Questo per dire che la tua idea è correttissima, ma a questo punto dovrei inserire SOLO per il file dei farmaci 500 colonne per relazionarle con gli ID Pazienti e di conseguenza diventa ingestibile penso (nel senso che un file del genere neanche si aprirebbe temo).
Ovviamente, io posso organizzare questi 10 file in modo tale che sia facilmente possibile estarrre i dati (ad esempio, nel caso dei farmaci, fare il discorso delle 500 colonne però mantenendolo in quel file in modo tale che sia ancora gestibile). Di conseguenza, penso che purtroppo sia necessario dover creare un file_estrazione che va ad entrare in questi file (che alla fine non sono neanche troppi) e prelevi le variabili corrette.
Perdonatemi se non sono stato precisissimo in un primo istante, e apprezzo qualsiasi tipo di idea/flusso in modo tale da semplificare il più possibile il processo.
replymonster
Utente Junior
 
Post: 30
Iscritto il: 06/11/17 11:45

Re: Estrazione dati da più file Excel

Postdi klingklang » 13/12/18 13:01

Se, come emerge da questo tuo ultimo messaggio, esistono tabelle in relazione uno-a-molti (o meglio molti-a-molti, in questo caso), a maggior ragione lo strumento da usare sarebbe Access. Con Excel certe cose non si riescono a gestire... per la precisione, in Access dovresti fare una tabella Farmaci con un elenco univoco di farmaci, e la tabella da te indicata (id paziente - farmaco) diventerebbe la "tabella ponte" tra le due senza duplicati (pazienti e farmaci), con una relazione uno-a-molti verso entrambe.
A quel punto potresti indicare un paziente e avere tutto l'elenco dei farmaci che ha preso, oppure un farmaco e avere tutto l'elenco dei pazienti che lo hanno preso. Ma ci allontaniamo anni luce dal progetto che avevi in mente.
Enrico
Windows 7 + Office 2016 64bit / Windows 10 + Office 365 32/64bit
Avatar utente
klingklang
Utente Junior
 
Post: 97
Iscritto il: 23/11/18 15:01
Località: San Giovanni in Persiceto

Re: Estrazione dati da più file Excel

Postdi replymonster » 13/12/18 14:49

Ti ringrazio per la tua risposta. Detto ciò mi rendo conto che non è lo strumento più adatto Excel, ma per quanto riguarda adattare i dati, lo ritengo comunque un compito estremamente semplice (motivo per cui non avevo inserito nell'esempio originario quello dei farmaci) anche se questo complica effettivamente le cose in quanto si andrà ad interagire con una grande mole di dati.
Il motivo per cui ho scritto sul forum è proprio quello di sapere se velocemente si può interagire con diversi file, tutti ordinati secondo le stesse logiche e fatti in modo che si prestino per estrazioni varie.
Volevo prendere coscienza sulle possibilità di creare un file che con discreta velocità potesse andare ad interagire con altri file esterni, oppure non ha completamente senso e sto sbagliando strada.

Grazie del contributo.
replymonster
Utente Junior
 
Post: 30
Iscritto il: 06/11/17 11:45

Re: Estrazione dati da più file Excel

Postdi Anthony47 » 13/12/18 17:42

Se ogni volta che devi fare una ricerca devi aprire una settantina di file secondo me finiresti con un tempo di ricerca di 150-250 secondi; probabilmente meno se i file sono su un disco a stato solido, certamente molto di piu' se fossero su un disco di rete.
Ma temo che solo una prova reale possa darti il risultato reale.
Se decidi di procedere, non analizzare i file leggendo un record alla volta dal foglio ma copiane l'intero contenuto in un array e poi lavora sul contenuto dell'array: i tempi di elaborazione saranno sicuramente piu' rapidi.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17231
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Estrazione dati da più file Excel":


Chi c’è in linea

Visitano il forum: Nessuno e 32 ospiti