In questo articolo risponderemo a una domanda frequente che rivolgono gli utenti: come si fa a suddividere i dati di un foglio Excel in fogli diversi sulla base di un criterio? Non è una operazione semplicissima, ma si può fare tranquillamente grazie ad uno strumento Excel poco utilizzato: le query. Vediamo come.
Suddividere i dati su più fogli
Immaginiamo di avere nel primo foglio di un file l’elenco che segue e di voler suddividere questi dati per categoria dividendoli per fogli. La suddivisione deve essere dinamica, nel senso che se all’elenco originale si aggiunge una spesa, questa deve comparire anche nel foglio relativo alla sua categoria.
Data | Categoria | Importo |
10/10/2011 | Francobolli | € 1,10 |
15/10/2011 | Cancelleria | € 6,00 |
01/12/2011 | Cancelleria | € 6,40 |
20/12/2011 | Libri | € 34,50 |
08/01/2012 | Cancelleria | € 10,60 |
01/02/2012 | Bolli | € 16,50 |
13/02/2012 | Materiale informatico | € 17,20 |
05/03/2012 | Cancelleria | € 15,78 |
05/03/2012 | Francobolli | € 5,50 |
01/04/2012 | Cancelleria | € 5,00 |
Mostreremo come fare per i francobolli, per tutte le altre categorie basterà ripetere, in fogli diversi, la stessa procedura. Per prima cosa aggiungete al file un nuovo foglio e rinominatelo Francobolli. Fate clic sulla cella A1 di questo nuovo foglio e portatevi nella scheda Dati della barra multifunzione. Qui, nel gruppo Carica dati esterni, fate clic sul pulsante Da altre origini, quindi scegliete Da Microsoft Query.
Vi si presenterà la finestra Scegli origine file, visibile in figura 1. Fate clic su Excel files e poi premete il pulsante OK.
Vi verrà chiesto di scegliere il file su cui eseguire la query. Scegliete lo stesso file su cui state lavorando e premete OK. Nella nuova finestra che vi si presenta scegliete il nome del foglio che contiene i dati originali e premete Aggiungi. Poi premete il tasto Chiudi per chiudere questa finestra.
Nella nuova finestra vedrete l’elenco delle etichette di colonna presenti nel foglio selezionato. Trascinate verso il basso quelle i cui dati volete riportare nel foglio filtrato. Dovete portare almeno la colonna che contiene i valori su cui applicare il filtro come mostrato in figura 2.
Fate poi clic nella colonna da filtrare (Categoria per noi) e scegliete Criteri > Aggiungi criteri.
Visualizzerete la finestra Aggiungi criteri visibile in figura 3, già in parte compilata, dove vengono filtrate le righe che nella colonna Criteri contengono il valore Francobolli. Il valore in base a cui filtrare può essere scritto o scelto dall’elenco che vi si presenta se premete il tasto Valori
Una volta impostati i criteri fate clic su Aggiungi e poi Chiudi.
A questo punto non vi resta che usare il pulsante Restituisci i dati per inserire in Excel i dati filtrati.
Vi si presenterà una finestra che vi chiede da dove cominciare ad incollare i dati filtrati: la cella A1 del foglio Francobolli andrà benissimo.
Ripetete questa procedura, in fogli diversi, per tutte le categorie da suddividere.
Aggiornamento dei dati
Le query si aggiornano automaticamente all’apertura del file, ma se volete aggiornare la suddivisione dei dati durante una sessione di lavoro, portatevi alla scheda Dati e, nel gruppo Connessioni, premete il pulsante Aggiorna tutti.
L’unico problema di questa soluzione è che se si sposta il file Microsoft Query, non trova più i dati dell’elenco originale da suddividere. Questo perché, anche se si lavoro all’interno di una cartella di lavoro, Microsoft Query, salva all’interno della query il percorso assoluto del file che contiene i dati. Per aggirare questo problema, occorre eseguire, all’apertura del file, una macro VBA che aggiorna questo percorso.
Per risolvere facilmente il problema, basta eseguire, all’apertura della cartella di lavoro che contiene la query, del codice VBA che aggiorna il nome del file sui cui si esegue la query, recuperandolo dal nome e dal percorso del file in uso: ActiveWorkbook.Path e ActiveWorkbook.Name.
Private Sub Workbook_Open() Dim strPercoso As String Dim strFile As String strPercorso = ActiveWorkbook.Path strFile = ActiveWorkbook.Name strPercorsoCompleto = strPercorso & "" & strFile strConn = "ODBC; DSN=Excel Files;DBQ=" & strPercorsoCompleto & ";DefaultDir=" & _ strPercorso & ";DriverId=1046; MaxBufferSize=2048;PageTimeout=5;" For Each connessione In ActiveWorkbook.Connections With connessione.ODBCConnection .BackgroundQuery = True .Connection = strConn .RefreshOnFileOpen = True .SavePassword = False .SourceConnectionFile = "" .SourceDataFile = "" .ServerCredentialsMethod = xlCredentialsMethodIntegrated .AlwaysUseConnectionFile = False End With connessione.Refresh Next End Sub
Nota
Questo codice va scritto nel foglio di codice relativo alla cartella di lavoro. Non per uno specifico foglio.
Autore: Alessandra Salvaggio – Tratto da: S.O.S. Office