Usare il Filtro Avanzato. - dal 04/09/04 pagina vista: volte Sui due siti esistono molti esempi sull'uso del Filtro per ottenere restituzioni di interrogazioni su dati presenti in database (o tabelle che dir si voglia) poste sui fogli di lavoro di una cartella Excel. Questa volta ci occupiamo dell'uso del Filtro Avanzato, sfruttando una possibilità fra quelle che questo tipo di Filtro permette: l'esigenza di ottenere (estrarre, filtrare) da una colonna di dati, tutti i dati non doppioni. Una pratica a volte necessaria specie quando in elenchi lunghi, compaiono più volte gli stessi dati, e vogliamo ottenere una copia di tutti i dati, ma riportati una sola volta. Possiamo eseguire la filtrazione in due modi:
Le istruzioni, molto semplici da capire, si basano sul metodo AdvancedFilter, che richiede la seguente sintassi:
Vediamo subito due semplici esempi: supponiamo che i dati da filtrare si trovino nella colonna A, da A1:A1000, e che vorremo estrarre, copiando i dati una sola volta, nella colonna F, partendo dalla cella F1:
nell'altro esempio invece filtreremo i dati sul posto; questo tipo di azione, a differenza del precedente, provoca la contrazione delle righe (vengono nascoste) i cui dati sono doppioni, avremo bisogno quindi di una successiva istruzione per ripristinare l'elenco originale, scoprendo le righe. Vediamo l'applicazione del filtro:
come si nota, è stato omesso l'argomento CopyToRange. Questa sotto è l'istruzione per togliere il filtro e ritornare all'elenco originale:
Accorgimenti: per evitare che se ad inizio elenco troviamo due valori uguali, questi due vengano comunque copiati ripetuti, sarà necessario impostare una "etichetta di colonna" (anche dal menù Inserisci/Nome/Etichetta/Etichetta di colonna) ed usare poi la prima cella come "intestazione di campo", quindi ad esempio scrivere "Nominativi" (o la descrizione del contenuto dell'elenco). Questo accorgimento ci consente, oltre alla possibilità di avere, nel caso di copia, un solo valore ripetuto se i primi due sono uguali (i primi due sotto l'etichetta di colonna), di inizializzare il nuovo elenco (quello copiato), con quella che Excel saprà essere una "etichetta di colonna"; questa operazione, unita all'opzione Header:=xlYes (anzichè Header:=xlGuess) del metodo Sort per l'ordinamento dei valori, consentirà di ordinare il nuovo elenco lasciando ad inizio elenco l'intestazione di colonna prevista, mentre l'ordinamento avverrà su tutti i valori sottostanti. Comunque, una eventuale istruzione vba per creare una "etichetta di colonna" è la seguente: (la cella A1 è l'ipotetica cella iniziale dell'elenco, dove avremo scritto l'intestazione di campo, e potremo scriverla ad inizio della routine più sotto):
Ognuno potrà decidere l'azione da definire, ma sicuramente la possibilità di ricreare un nuovo elenco con dati univoci, si presta a moltissime implicazioni, come ad esempio ottenere un elenco di voci univoche da usare come elenco per caricare ListBox oComboBox, assegnando il nuovo elenco al RowSource (o ListFillRange) di una eventuale ListBox. Sarà possibile inoltre creare un'ordinamento alfabetico del nuovo elenco, senza sconvolgere la tabella di origine, in modo da ottenere nella ListBox la giusta sequenza di dati. Riporto, come esercizio, la routine completa di creazione nuovo elenco con i dati univoci, il loro ordinamento, e l'assegnazione dell'intervallo ad una ListBox posta sul foglio di lavoro. Userò gli stessi intervalli già visti sopra, anche se sarà possibile come destinazione dell'elenco filtrato, usare una colonna fuori vista, come l'ultima (la IV):
Molti sono gli utilizzi di un elenco univoco, ognuno potrà adattarlo alle proprie necessità; a volte è un suggerimento che conta, e spero di averne suggerito uno. Buon lavoro. prelevato sul sito www.ennius.altervista.org |