A volte potremmo desiderare di raccogliere in modo univoco i nomi in una lista di una ComboBox, di una ListBox, di una matrice o in un foglio di Excel.
Ma che significa pretendere una lista di valori univoci?
Raccogliere delle informazioni in maniera univoca significa scegliere tra le voci presenti in una lista tutte le voci prese una sola volta. Infatti molto spesso in una tabella o in una lista possiamo trovare alcuni dati duplicati. Immaginate una tabella progettata per una gestione Magazzino. Potremmo avere una situazione del genere:
| Codice | Prodotto | Prezzo | Giacenza | Categoria |
|---|---|---|---|---|
| 1 | Trek 9000 Mountain Bike | € 1.200,00 | 6 | 2 |
| 2 | Eagle FS-3 Mountain Bike | € 1.800,00 | 8 | 2 |
| 3 | Dog Ear Cyclecomputer | € 75,00 | 20 | 1 |
| 4 | Victoria Pro All Weather Tires | € 54,95 | 20 | 4 |
| 5 | Dog Ear Helmet Mount Mirrors | € 7,45 | 12 | 1 |
| 6 | Viscount Mountain Bike | € 635,00 | 5 | 2 |
| 7 | Viscount C-500 Wireless Bike Computer | € 49,00 | 30 | 1 |
| 8 | Kryptonite Advanced 2000 U-Lock | € 50,00 | 20 | 1 |
| 9 | Nikoma Lok-Tight U-Lock | € 33,00 | 12 | 1 |
| 10 | Viscount Microshell Helmet | € 36,00 | 20 | 1 |
| 11 | GT RTS-2 Mountain Bike | € 1.650,00 | 5 | 2 |
| 12 | Shinoman 105 SC Brakes | € 23,50 | 16 | 4 |
| 13 | Shinoman Dura-Ace Headset | € 67,50 | 20 | 6 |
| 14 | Eagle SA-120 Clipless Pedals | € 139,95 | 20 | 6 |
| 15 | ProFormance Toe-Klips 2G | € 4,99 | 40 | 6 |
| 16 | ProFormance ATB All-Terrain Pedal | € 28,00 | 40 | 4 |
| 17 | Shinoman Deluxe TX-30 Pedal | € 45,00 | 60 | 4 |
| 18 | Viscount CardioSport Sport Watch | € 179,00 | 12 | 1 |
| ecc. |
In questa tabella notate che, mentre nei campi "Codice" e "Prodotto" i valori sono raccolti in modo univoco, non altrettanto univoci sono i valori contenuti negli altri campi. Infatti, mentre per ogni codice abbiamo uno ed un solo prodotto, per più prodotti possiamo avere nei campi "Prezzo", "Giacenza" e "Categoria" valori uguali.
A partire da questa tabella potremmo desiderare di raggruppare i prodotti per categoria
Nel lavoro che faremo dovremo:
In questa maniera il risultato della nostra elaborazione sarà un elenco o una tabella o una serie di elenchi e/o tabelle che conterranno tutti i nomi dei prodotti che appartengono a ciascuna categoria ed ogni elenco o tabella sarà veramente univoca.
Estrarre le categorie dalla tabella 1
Iniziamo col creare un elenco che esponga in modo univoco, cioè prese una sola volta, tutte le voci riguardanti le categorie. Se nella colonna ci fossero 10 voci di categorie tutte uguali, queste dovranno essere prese una sola volta.
Questo potrebbe essere un approccio al problema:
Il lavoro eseguito sembra abbastanza chiaro. Quindi possiamo passare a visualizzare le categorie nel secondo foglio:
Con questo otteniamo questo risultato:
| 2 | |||
| 1 | |||
| 4 | |||
| 6 |
Raggruppare i prodotti per categoria
Ora possiamo cercare tutti i prodotti che appartengono ad ogni singola categoria:
Anche qui il lavoro non sembra presentare particolari problemi.
Essendo in un costrutto With ... End With, è da notare solo la sintassi usata nei riferimenti alle celle:
.Cells(Riga_Dest, Col_Dest) = Cells(R, Col_Prod)
.Cells preceduta da un punto si riferisce all'oggetto puntato da With (il "foglio2")
Cells senza il punto davanti fa riferimento all'oggetto attivo (il "foglio1")
Il risultato sarà il seguente
| 2 | |||
| Trek 9000 Mountain Bike | 1200 | 6 | |
| Eagle FS-3 Mountain Bike | 1800 | 8 | |
| Viscount Mountain Bike | 635 | 5 | |
| GT RTS-2 Mountain Bike | 1650 | 5 | |
| 1 | |||
| Dog Ear Cyclecomputer | 75 | 20 | |
| Dog Ear Helmet Mount Mirrors | 7,45 | 12 | |
| Viscount C-500 Wireless Bike Computer | 49 | 30 | |
| Kryptonite Advanced 2000 U-Lock | 50 | 20 | |
| Nikoma Lok-Tight U-Lock | 33 | 12 | |
| Viscount Microshell Helmet | 36 | 20 | |
| Viscount CardioSport Sport Watch | 179 | 12 | |
| 4 | |||
| Victoria Pro All Weather Tires | 54,95 | 20 | |
| Shinoman 105 SC Brakes | 23,5 | 16 | |
| ProFormance ATB All-Terrain Pedal | 28 | 40 | |
| Shinoman Deluxe TX-30 Pedal | 45 | 60 | |
| 6 | |||
| Shinoman Dura-Ace Headset | 67,5 | 20 | |
| Eagle SA-120 Clipless Pedals | 139,95 | 20 | |
| ProFormance Toe-Klips 2G | 4,99 | 40 |
Questo potrebbe essere l'aspetto della tabella quando il lavoro sarà terminato.
Qui potete vedere il codice completo
Questo è tutto per questa volta.