Sommario
Qualche tempo fa abbiamo iniziato a esplorare le funzionalità della convalida dei dati di Excel e abbiamo imparato a creare un semplice elenco a discesa in Excel basato su un elenco separato da virgole, un intervallo di celle o un intervallo con nome.
Oggi analizzeremo questa funzione in modo approfondito e impareremo a creare elenchi a discesa a cascata che visualizzano le scelte a seconda del valore selezionato nel primo elenco a discesa. In altre parole, creeremo un elenco di convalida dei dati di Excel basato sul valore di un altro elenco.
Come creare un menu a tendina a dipendenza multipla in Excel
Creare elenchi a discesa dipendenti a più livelli in Excel è facile: bastano alcuni intervalli di nomi e la formula INDIRETTO. Questo metodo funziona con tutte le versioni di Excel 365 - 2010 e precedenti.
1. Digitare le voci per gli elenchi a discesa
Per prima cosa, digitate le voci che volete far apparire negli elenchi a discesa, ogni elenco in una colonna separata. Per esempio, sto creando un elenco a discesa a cascata di esportatori di frutta e la colonna A del mio foglio sorgente ( La frutta ) include gli elementi del primo menu a tendina e altre 3 colonne elencano gli elementi dei menu a tendina dipendenti.
2. Creare intervalli denominati
Ora è necessario creare i nomi per l'elenco principale e per ciascuno degli elenchi dipendenti. Si può fare aggiungendo un nuovo nome nella cartella Nome Manager ( Formule scheda> Nome Manager> Nuovo) o digitando il nome direttamente nel campo Scatola del nome .
Nota: se la prima riga è una sorta di intestazione di colonna come quella che si vede nella schermata precedente, non deve essere inclusa nell'intervallo denominato.
Per le istruzioni dettagliate, vedere Come definire un nome in Excel.
Cose da ricordare:
- Le voci che devono comparire nel primo elenco a discesa devono essere costituite da una sola parola, ad es. Albicocca , Mango , Arance Se le voci sono composte da due, tre o più parole, vedere Come creare una tendina a cascata con voci a più parole.
- I nomi degli elenchi dipendenti devono essere esattamente uguali alla voce corrispondente dell'elenco principale. Ad esempio, l'elenco dipendente da visualizzare quando " Mango " è selezionato dal primo elenco a discesa deve essere chiamato Mango .
Al termine, si può premere Ctrl+F3 per aprire la finestra di dialogo Nome Manager e verificare che tutti gli elenchi contengano nomi e riferimenti corretti.
3. Creare il primo elenco a discesa (principale)
- Nello stesso foglio di lavoro o in un altro, selezionate una o più celle in cui volete che appaia l'elenco a discesa principale.
- Vai al sito Dati fare clic su Convalida dei dati e impostare un elenco a discesa basato su un intervallo di nomi nel modo consueto selezionando Elenco sotto Consentire e inserendo il nome dell'intervallo nel campo Fonte scatola.
Per i passaggi dettagliati, vedere Creazione di un elenco a discesa basato su un intervallo di nomi.
Il risultato è un menu a discesa nel foglio di lavoro simile a questo:
4. Creare l'elenco a discesa dipendente
Selezionate una o più celle per il menu a discesa dipendente e applicate nuovamente la convalida dei dati di Excel come descritto nel passaggio precedente. Questa volta, però, al posto del nome dell'intervallo, inserite la seguente formula nel campo Fonte campo:
=INDIRETTO(A2)
Dove A2 è la cella con il primo elenco a discesa (primario).
Se la cella A2 è attualmente vuota, verrà visualizzato il messaggio di errore " L'origine è attualmente valutata come un errore. Si desidera continuare? "
Fare clic in modo sicuro Sì e non appena si seleziona una voce dal primo menu a tendina, si vedranno le voci corrispondenti nel secondo menu a tendina dipendente.
5. Aggiungere un terzo elenco a discesa dipendente (opzionale)
Se necessario, si può aggiungere un terzo elenco a discesa a cascata che dipende dalla selezione del secondo menu a discesa o dalle selezioni dei primi due menu a discesa.
Impostare il terzo menu a tendina che dipende dal secondo elenco
È possibile creare un elenco a discesa di questo tipo nello stesso modo in cui abbiamo appena creato un secondo menu a discesa dipendente. Basta ricordare le due cose importanti discusse sopra, che sono essenziali per il corretto funzionamento degli elenchi a discesa a cascata.
Per esempio, se si vuole visualizzare un elenco di regioni nella colonna C a seconda del paese selezionato nella colonna B, si crea un elenco di regioni per ogni paese e lo si chiama con il nome del paese, esattamente come il paese appare nei secondi elenchi a discesa. Per esempio, un elenco di regioni indiane dovrebbe chiamarsi "India", un elenco di regioni cinesi "Cina" e così via.
Successivamente, si seleziona una cella per il terzo menu a tendina (C2 nel nostro caso) e si applica la convalida dei dati di Excel con la seguente formula (B2 è la cella con il secondo menu a tendina che contiene un elenco di Paesi):
=INDIRETTO(B2)
Ora, ogni volta che si seleziona India Sotto l'elenco dei Paesi della colonna B, nel terzo menu a tendina sono disponibili le seguenti scelte:
Nota: l'elenco delle regioni visualizzato è unico per ogni Paese, ma non dipende dalla selezione effettuata nel primo elenco a discesa.
Creare un terzo menu a tendina dipendente dai primi due elenchi
Se è necessario creare un menu a discesa a cascata che dipenda dalle selezioni effettuate sia nel primo che nel secondo elenco a discesa, procedere in questo modo:
- Creare altri gruppi di intervalli denominati e assegnare loro i nomi delle combinazioni di parole presenti nei primi due menu a tendina. Ad esempio, abbiamo Mango, arance, ecc. nel 1° elenco e India, Brasile, ecc. nel 2. Poi si creano intervalli denominati MangoIndia , MangoBrasile , AranceIndia , AranceBrasile Questi nomi non devono contenere trattini bassi o altri caratteri aggiuntivi.
=INDIRETTO(SOTTOTITUTO(A2&B2," ",""))
Dove A2 e B2 contengono rispettivamente il primo e il secondo menu a tendina.
Di conseguenza, il terzo elenco a discesa visualizzerà le regioni corrispondenti alle aree La frutta e Paese selezionati nei primi due elenchi a discesa.
Questo è il modo più semplice per creare caselle a discesa a cascata in Excel, ma presenta una serie di limitazioni.
Limiti di questo approccio:
- Gli elementi dell'elenco a discesa principale devono essere costituiti da voci di una sola parola. Vedere come creare elenchi a discesa a cascata con voci di più parole.
- Questo metodo non funziona se le voci dell'elenco a discesa principale contengono caratteri non consentiti nei nomi degli intervalli, come il trattino (-), l'ampersand (&) ecc.
- I menu a discesa creati in questo modo non si aggiornano automaticamente, cioè è necessario modificare i riferimenti degli intervalli denominati ogni volta che si aggiungono o si rimuovono elementi negli elenchi di origine. Per superare questa limitazione, provate a creare un elenco a discesa dinamico a cascata.
Creazione di elenchi a discesa a cascata con voci a più parole
Le formule INDIRETTO utilizzate nell'esempio precedente possono gestire solo elementi di una sola parola. Ad esempio, la formula =INDIRETTO(A2) fa riferimento indiretto alla cella A2 e visualizza l'intervallo con lo stesso nome della cella di riferimento. Tuttavia, gli spazi non sono ammessi nei nomi di Excel, per cui questa formula non funziona con nomi di più parole.
La soluzione consiste nell'utilizzare la funzione INDIRETTO in combinazione con SOTTOTITUTO, come abbiamo fatto per la creazione del terzo menu a tendina.
Supponiamo di avere Melone d'acqua In questo caso, è possibile creare un elenco di esportatori di meloni d'acqua con una sola parola senza spazi. Anguria .
Quindi, per il secondo menu a tendina, applicate la Convalida dati di Excel con la seguente formula che rimuove gli spazi dal nome nella cella A2:
=INDIRETTO(SOSTITUTO(A2," ",""))
Come impedire le modifiche nell'elenco a discesa primario
Immaginate il seguente scenario: l'utente ha effettuato le selezioni in tutti gli elenchi a discesa, poi ha cambiato idea, è tornato al primo elenco e ha scelto un altro elemento. Di conseguenza, la prima e la seconda selezione non corrispondono. Per evitare che ciò accada, si potrebbe bloccare qualsiasi modifica nel primo elenco a discesa non appena viene effettuata una selezione nel secondo elenco.
A tale scopo, quando si crea il primo menu a tendina, si utilizza una formula speciale che controlla se una voce è selezionata nel secondo menu a tendina:
=IF(B2="", Fruit, INDIRECT("FakeList"))
Dove B2 contiene il secondo menu a tendina, " La frutta " è il nome dell'elenco che appare nel primo menu a discesa e " Elenco di falsi " è un nome falso che non esiste.
Ora, se un elemento è selezionato nel secondo elenco a discesa, non sarà disponibile alcuna scelta quando l'utente farà clic sulla freccia accanto al primo elenco.
Creazione di elenchi a discesa dinamici a cascata in Excel
Il vantaggio principale di un elenco a discesa dinamico dipendente da Excel è che siete liberi di modificare gli elenchi di origine e le vostre caselle a discesa verranno aggiornate al volo. Naturalmente, la creazione di menu a discesa dinamici richiede un po' più di tempo e formule più complesse, ma ritengo che sia un investimento degno di nota perché, una volta impostati, tali menu a discesa sono un vero piacere da lavorare.
Come per quasi tutto in Excel, è possibile ottenere lo stesso risultato in diversi modi. In particolare, è possibile creare un menu a tendina dinamico utilizzando una combinazione di funzioni OFFSET, INDIRECT e COUNTA o una formula più resistente INDEX MATCH. Quest'ultimo metodo è quello che preferisco perché offre numerosi vantaggi, i più importanti dei quali sono:
- È necessario creare solo 3 intervalli denominati, indipendentemente dal numero di elementi presenti negli elenchi principali e dipendenti.
- Gli elenchi possono contenere più parole e qualsiasi carattere speciale.
- Il numero di voci può variare in ogni colonna.
- L'ordine delle voci non ha importanza.
- Infine, è molto facile mantenere e modificare gli elenchi di sorgenti.
Ok, basta con la teoria, passiamo alla pratica.
1. Organizzare i dati di partenza in una tabella.
Come al solito, la prima cosa da fare è scrivere tutte le scelte per gli elenchi a discesa in un foglio di lavoro. Questa volta, dovrete memorizzare i dati di partenza in una tabella di Excel. A tal fine, una volta inseriti i dati, selezionate tutte le voci e premete Ctrl + T o fate clic su Inserire scheda> Tabella Quindi digitate il nome della vostra tabella nel campo Nome della tabella scatola.
L'approccio più comodo e visivo è quello di memorizzare gli elementi del primo menu a tendina come intestazioni di tabella e gli elementi del menu a tendina dipendente come dati di tabella. La schermata seguente illustra la struttura della mia tabella, denominata esportatori_tbl - i nomi dei frutti sono intestazioni di tabella e sotto il nome del frutto corrispondente viene aggiunto un elenco di Paesi esportatori.
2. Creare nomi in Excel
Ora che i dati di partenza sono pronti, è il momento di impostare i riferimenti denominati che recupereranno dinamicamente l'elenco corretto dalla tabella.
2.1. Aggiungere un nome per la riga di intestazione della tabella (tendina principale)
Per creare un nuovo nome che faccia riferimento all'intestazione della tabella, selezionarlo e poi fare clic su Formule > Nome Manager > Nuovo oppure premere Ctrl + F3 .
Microsoft Excel utilizzerà il sistema di riferimento della tabella incorporato per creare il nome della tabella. nome_tabella[#intestazioni] modello.
Dategli un nome significativo e facile da ricordare, ad esempio. elenco_frutti e fare clic su OK .
2.2. Creare un nome per la cella contenente il primo elenco a discesa
So che non avete ancora un menu a tendina :) ma dovete scegliere la cella che ospiterà il vostro primo menu a tendina e creare subito un nome per quella cella, perché dovrete includere questo nome nel riferimento del terzo nome.
Ad esempio, la mia prima casella a discesa risiede nella cella B1 del foglio 2, quindi creo un nome per essa, qualcosa di semplice e autoesplicativo come frutta :
Suggerimento: utilizzare i riferimenti di cella appropriati per copiare gli elenchi a discesa sul foglio di lavoro.
Assicuratevi di leggere attentamente i paragrafi seguenti, perché si tratta di un consiglio molto utile da non perdere. Grazie mille a Karen per averlo pubblicato!
Se si prevede di copiare gli elenchi a discesa in altre celle, utilizzare riferimenti di cella misti quando si crea il nome per la cella o le celle con il primo elenco a discesa.
Affinché i menu a tendina vengano copiati correttamente su altri colonne (cioè a destra), utilizzate riferimenti relativi alle colonne (senza il segno $) e assoluti alle righe (con $), come = Foglio2!B$1.
Di conseguenza, l'elenco a discesa dipendente di B1 apparirà nella cella B2; l'elenco a discesa dipendente di C1 verrà visualizzato in C2 e così via.
E se si prevede di copiare i menu a tendina in altri file (cioè lungo la colonna), quindi utilizzate coordinate assolute di colonna (con $) e relative di riga (senza $) come = Foglio2!$B1.
Per copiare una cella a discesa in qualsiasi direzione, utilizzare un riferimento relativo (senza il segno $) come = Foglio2!B1.
2.3. Creare un nome per recuperare le voci del menu dipendente
Invece di impostare nomi unici per ogni elenco di dipendenze, come abbiamo fatto nell'esempio precedente, ne creeremo uno solo formula nominativa che non è assegnata a nessuna cella in particolare o a un intervallo di celle. Recupererà l'elenco corretto di voci per il secondo elenco a discesa a seconda della selezione effettuata nel primo elenco a discesa. Il vantaggio principale dell'utilizzo di questa formula è che non sarà necessario creare nuovi nomi quando si aggiungono nuove voci al primo elenco a discesa: una formula con nome li copre tutti.
Con questa formula si crea un nuovo nome in Excel:
=INDEX(exporters_tbl,,MATCH(fruit,fruit_list,0))
Dove:
esportatori_tbl
- il nome della tabella (creata al punto 1);frutta
- il nome della cella contenente il primo elenco a discesa (creato al punto 2.2);elenco_frutti
- il nome che fa riferimento alla riga di intestazione della tabella (creata al punto 2.1).
Gli ho dato un nome elenco_esportatori come si vede nella schermata sottostante.
Prima di passare alla fase finale, può essere una buona idea aprire il Name Manager ( Ctrl + F3 ) e verificare i nomi e i riferimenti:
3. Impostare la convalida dei dati di Excel
Questa è la parte più semplice. Con le due formule nominate, si imposta la convalida dei dati nel modo consueto ( Dati scheda> Convalida dei dati ).
- Per il primo elenco a discesa, nella casella Sorgente inserire =lista_di_frutti (il nome creato al punto 2.1).
- Per l'elenco a discesa Dipendenti, immettere =elenco_esportatori (il nome creato al punto 2.3).
Il menu a discesa dinamico a cascata è pronto e si aggiornerà automaticamente riflettendo le modifiche apportate alla tabella di origine.
Questo menu a tendina dinamico di Excel, perfetto sotto tutti gli altri punti di vista, ha un difetto: se le colonne della tabella di origine contengono un numero diverso di voci, le righe vuote appariranno nel menu in questo modo:
Escludere le righe vuote dal menu a discesa dinamico a cascata
Se si desidera eliminare le righe vuote nelle caselle a discesa, è necessario fare un ulteriore passo avanti e migliorare la formula INDEX / MATCH utilizzata per creare l'elenco a discesa dinamico dipendente.
L'idea è quella di utilizzare 2 funzioni INDEX, dove la prima ottiene la cella in alto a sinistra e la seconda restituisce la cella in basso a destra dell'intervallo, oppure la funzione OFFSET con INDEX e COUNTA annidati. I passaggi dettagliati seguono:
1. Creare due nomi aggiuntivi
Per non rendere la formula troppo ingombrante, creare prima un paio di nomi di aiuto con le seguenti formule semplici:
- Un nome chiamato col_num per fare riferimento al numero di colonna selezionato:
=MATCH(frutta,lista_frutta,0)
- Un nome chiamato intero_col per fare riferimento alla colonna selezionata (non al numero della colonna, ma all'intera colonna):
=INDEX(exporters_tbl,,col_num)
Nelle formule precedenti, esportatori_tbl
è il nome della tabella di origine, frutta
è il nome della cella contenente il primo menu a tendina e elenco_frutta
è il nome che fa riferimento alla riga di intestazione della tabella.
2. Creare il riferimento con nome per la tendina dipendente
Quindi, utilizzare una delle formule seguenti per creare un nuovo nome (chiamiamolo elenco_esportatori2 ) da utilizzare con l'elenco a discesa dipendente:
=INDEX(exporters_tbl,1,col_num) : INDEX(exporters_tbl, COUNTA(entire_col), col_num)
=OFFSET(INDEX(exporters_tbl,1,col_num),0,0,COUNTA(entire_col))
3. Applicare la convalida dei dati
Infine, selezionare la cella che contiene il menu a tendina dipendente e applicare la convalida dei dati inserendo = elenco_esportatori2 (il nome creato nel passaggio precedente) nel file Fonte scatola.
L'immagine seguente mostra il menu a discesa dinamico risultante in Excel, dove tutte le righe vuote sono scomparse!
Nota: quando si lavora con gli elenchi a discesa dinamici a cascata creati con le formule precedenti, nulla impedisce all'utente di modificare il valore nel primo menu a discesa dopo aver effettuato la selezione nel secondo menu; di conseguenza, le scelte nei menu a discesa primari e secondari potrebbero non corrispondere. È possibile bloccare le modifiche nel primo riquadro dopo che è stata effettuata una selezione nel secondo utilizzando VBA oppureformule complesse suggerite in questa esercitazione.
In questo modo si crea un elenco di convalida dei dati in Excel basato sui valori di un altro elenco. Scaricate le nostre cartelle di lavoro di esempio per vedere in azione gli elenchi a discesa a cascata. Grazie per aver letto!
Eserciziario da scaricare
Esempio di discesa a cascata 1- versione semplice
Esempio di discesa a cascata 2 - versione avanzata senza spazi vuoti