Come effettuare una selezione multipla da un elenco a discesa in Excel (3 modi)

  • Condividi Questo
Hugh West

A seconda delle circostanze, potrebbe essere necessario selezionare più valori all'interno di un elenco a discesa. In questa esercitazione vi mostreremo come effettuare una selezione multipla in un elenco a discesa. Per questa sessione utilizzeremo Excel 2019, ma siete liberi di utilizzare la versione che preferite.

Prima di immergerci nella sessione, conosciamo il set di dati che è alla base dei nostri esempi.

Qui abbiamo diversi elementi di cancelleria, utilizzando i quali creeremo un elenco a discesa e selezioneremo più elementi.

Si noti che si tratta di un set di dati semplice per mantenere le cose chiare. In uno scenario pratico, si potrebbe incontrare un set di dati molto più grande e complesso.

Libro di lavoro pratico

Potete scaricare il libro di esercizi dal link sottostante.

Effettuare una selezione multipla da un elenco a discesa.xlsm

Selezione multipla in un elenco a discesa

Prima di tutto, dobbiamo creare un elenco a discesa sulla base delle nostre stazioni. Creiamolo rapidamente. Non esitate a visitare l'articolo sulla creazione di un elenco a discesa.

Nel Convalida dei dati selezionare la finestra di dialogo ELENCO e inserire l'intervallo di celle degli elementi.

B4:B11 è l'intervallo che contiene gli elementi di cancelleria. Ora si trova l'elenco a discesa.

Per saperne di più: Elenco a discesa di Excel in base alla selezione

1. Selezionare più elementi (consente di duplicare la selezione)

Un elenco a discesa convenzionale seleziona sempre un singolo elemento. Qui possiamo vedere che abbiamo selezionato Penna dall'elenco (immagine sotto).

Ora, se si seleziona un altro elemento, ad esempio Matita

sostituirà il valore precedente. Solo Matita rimarrà selezionato.

Per selezionare più elementi, è necessario utilizzare il metodo VBA Aprire il codice Microsoft Visual Basic per le applicazioni (premere ALT + F11 per aprirlo).

Ora fate doppio clic sul nome o sul numero del foglio di lavoro in cui desiderate selezionare più elementi all'interno dell'elenco a discesa. Troverete la finestra del codice per quel particolare foglio.

Ecco la finestra del codice per Foglio2 nella nostra cartella di lavoro (abbiamo l'elenco a discesa in questo foglio).

Una volta aperta la finestra del codice, inserirvi il seguente codice

 Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.Value Application.UndoOldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else Target.Value = Oldvalue & ", " & Newvalue End If End If If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub 

Salvate il codice e ora provate a selezionare i valori nell'elenco a discesa.

Avendo selezionato Matita , selezioniamo un altro elemento Taccuino E come potete vedere, abbiamo trovato entrambi gli articoli (immagine sotto).

Questo codice ci consentirà di ripetere la selezione. Se selezioniamo Matita di nuovo,

troveremo di nuovo l'elemento nel riquadro di selezione.

Codice Spiegazione

Abbiamo dichiarato due stringhe Vecchio valore e Nuovo valore .

Si può notare che abbiamo creato l'elenco a discesa nella cartella D4 Ecco perché il nostro indirizzo di destinazione è D4 Inoltre, abbiamo ricontrollato se la cella sta utilizzando la convalida dei dati o meno, utilizzando Target.SpecialCells .

Una volta selezionato un valore, abbiamo disattivato gli eventi ( Application.EnableEvents = False ) in modo che le modifiche non facciano scattare di nuovo l'evento. Quindi ha memorizzato l'elemento selezionato nel file Nuovo valore .

Dopo aver annullato la modifica, abbiamo impostato il valore nella cartella Vecchio valore Quindi verificare se il Vecchio valore è vuoto o meno. Se è vuoto (significa che è stato selezionato un solo valore), viene restituito il valore Nuovo valore Altrimenti, concatenare i file Vecchio valore e Nuovo valore .

Prima di terminare, resettare l'evento, in modo da poterlo modificare se necessario.

Per saperne di più: Elenco a discesa multiplo dipendente Excel VBA

2. Selezionare più voci dall'elenco a discesa (solo selezione unica)

Nella sezione precedente abbiamo visto le selezioni multiple in cui era consentita la ripetizione. Se non si vuole che ciò avvenga, seguire questa sezione.

Per comodità, abbiamo utilizzato un foglio separato per questa dimostrazione. Questa volta siamo al foglio 3. Scrivete il seguente codice nella finestra del codice di questo foglio.

 Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.ValueApplication.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & ", " & Newvalue Else: Target.Value = Oldvalue End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub 

C'è qualche differenza rispetto al codice precedente? Date un'occhiata più da vicino, sarete in grado di notare la leggera differenza.

Qui abbiamo utilizzato un VBA funzione chiamata ISTR . il ISTR restituisce la posizione della prima occorrenza di una sottostringa in una stringa. Per ulteriori informazioni, consultare l'articolo INSTR.

Utilizzando questa operazione logica con InStr(1, Oldvalue, Newvalue) = 0, abbiamo controllato se i valori sono stati trovati o meno. Se l'operazione logica restituisce VERO (non trovato in precedenza) consente di selezionare l'elemento e di concatenarlo con il valore precedente.

Salvate il codice e ora provate a selezionare un elemento che è già stato selezionato.

Qui abbiamo già selezionato Matita Se si desidera selezionarlo di nuovo, non è possibile. Non sono ammessi valori duplicati.

Per saperne di più: Come creare un elenco a discesa da un altro foglio in Excel

3. Selezionare gli elementi in Newline

Finora abbiamo visto che gli elementi sono separati da una virgola. In questa sezione, organizzeremo gli elementi selezionati con delle linee nuove.

Per semplicità, stiamo unendo alcune celle con l'elemento D4 Per fare ciò, selezionare le celle che si desidera unire e fare clic su Unire e centrare dal Allineamento della sezione Casa scheda.

La cella guadagnerà più altezza.

Vediamo ora il codice per separare gli elementi attraverso i newline. Utilizzate il seguente codice

 Private Sub Worksheet_Change(ByVal Target As Range) Dim Oldvalue As String Dim Newvalue As String Application.EnableEvents = True On Error GoTo Exitsub If Target.Address = "$D$4" Then If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub Else: If Target.Value = "" Then GoTo Exitsub Else Application.EnableEvents = False Newvalue = Target.ValueApplication.Undo Oldvalue = Target.Value If Oldvalue = "" Then Target.Value = Newvalue Else If InStr(1, Oldvalue, Newvalue) = 0 Then Target.Value = Oldvalue & vbNewLine & Newvalue Else: Target.Value = Oldvalue End If End If Application.EnableEvents = True Exitsub: Application.EnableEvents = True End Sub 

L'unica differenza rispetto al codice precedente è che questa volta si è usato il metodo vbNewLine in mezzo VecchioValore e NuovoValore .

vbNewLine fornisce una nuova linea tra gli elementi.

Ora selezionate gli elementi.

Selezioniamo un articolo Penna che appare nell'immagine precedente. Ora selezionate un altro elemento.

I due articoli si trovano in linee diverse.

Qui abbiamo due valori che si trovano in due righe diverse. Selezionando un altro valore, questo verrà aggiunto a un'altra riga. Ogni valore verrà inserito in una nuova riga.

Si noti che se si vuole un altro delimitatore per separare gli elementi, lo si può usare all'interno di doppi apici al posto di vbNewline .

Conclusione

Per oggi è tutto. Abbiamo elencato diversi approcci per effettuare selezioni multiple in un elenco a discesa. Speriamo che questo vi sia utile. Sentitevi liberi di commentare se qualcosa vi sembra difficile da capire. Fateci sapere altri metodi che ci sono sfuggiti.

Hugh West è un istruttore e analista di Excel di grande esperienza con oltre 10 anni di esperienza nel settore. Ha conseguito una laurea in Contabilità e Finanza e un Master in Economia Aziendale. Hugh ha una passione per l'insegnamento e ha sviluppato un approccio didattico unico che è facile da seguire e capire. La sua conoscenza approfondita di Excel ha aiutato migliaia di studenti e professionisti in tutto il mondo a migliorare le proprie competenze ed eccellere nella propria carriera. Attraverso il suo blog, Hugh condivide le sue conoscenze con il mondo, offrendo esercitazioni gratuite su Excel e formazione online per aiutare le persone e le aziende a raggiungere il loro pieno potenziale.