Seleziona più elementi negli elenchi a discesa di Excel Elenco a discesa – guida completa
Gli elenchi a discesa di Excel sono uno strumento fantastico per garantire coerenza dei dati e facilitare l’inserimento. Tuttavia, per impostazione predefinita, consentono di selezionare un solo elemento. E se avessi bisogno di sceglierne più di uno dallo stesso elenco a discesa? Questa guida completa ti mostra diversi metodi per abilitare selezioni multiple negli elenchi a discesa di Excel, gestire i duplicati, impostare separatori personalizzati e definire l’ambito di questi elenchi.

- Consentire elementi duplicati
- Rimuovere eventuali elementi esistenti
- Impostare un separatore personalizzato
- Impostazione di un Intervallo limitato
- Esecuzione in un foglio protetto
Abilitare selezioni multiple in Elenco a discesa
Questa sezione presenta due metodi per abilitare le selezioni multiple negli elenchi a discesa di Excel.
Utilizzo del codice VBA
Per abilitare le selezioni multiple in un elenco a discesa, puoi utilizzare «Visual Basic for Applications» (VBA) in Excel. Con uno script VBA, è possibile modificare il comportamento dell’elenco a discesa trasformandolo in un elenco a scelta multipla. Procedi nel seguente modo.
Passaggio 1: Apri l’editor del foglio (Codice)
- Apri il foglio di lavoro che contiene l’elenco a discesa per cui desideri abilitare la selezione multipla.
- Fai clic con il pulsante destro del mouse sulla scheda del foglio e seleziona **«Visualizza codice»** dal menu contestuale.

Passaggio 2: Usa il codice VBA
Ora copia il seguente codice VBA e incollalo nella finestra del foglio (Codice) che hai aperto.
Codice VBA: Abilita selezioni multiple negli elenchi a discesa di Excel.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub

Risultato
Quando torni al foglio di lavoro, il Elenco a discesa ti permetterà di scegliere più opzioni, come mostrato nella demo seguente:

Il codice VBA sopra riportato:
- Si applica a tutte le convalide dati di tipo Elenco a discesa nel foglio di lavoro corrente, sia a quelle già presenti che a quelle create in futuro.
- Ti impedisce di selezionare lo stesso elemento più di una volta in ciascun elenco a discesa.
- Utilizza la virgola come separatore per il numero di elementi selezionati. Per usare altri delimitatori, ti invitiamo a consultare questa sezione per modificare il separatore.
Utilizzo di Kutools per Excel in pochi clic
Se non ti senti a tuo agio con VBA, una soluzione più semplice è la funzione **“Crea elenco a discesa con selezioni multiple”** di **Kutools per Excel**. Questo strumento intuitivo ti permette di abilitare facilmente le selezioni multiple negli elenchi a discesa, personalizzare il separatore e gestire i duplicati in modo flessibile, adattandosi a ogni tua esigenza.
Dopo aver installato Kutools per Excel, vai alla scheda «Kutools», seleziona «Elenco a discesa» > «Crea elenco a discesa con selezioni multiple» e configura come segue.
- Specifica l'intervallo contenente l'elenco a discesa da cui devi selezionare più elementi.
- Specifica il separatore per il numero di elementi selezionati nell’elenco a discesa.
- Fai clic su «OK» per completare la configurazione.
Risultato
Ora, quando fai clic su una cella contenente un elenco a discesa nell’intervallo limitato, accanto ad essa appare una comoda casella di riepilogo. Basta un semplice clic sul pulsante “+” per aggiungere elementi all’elenco a discesa o sul pulsante “–” per rimuovere quelli non più desiderati. Guarda la demo seguente:

- Seleziona l'opzione «Inserisci un separatore e vai a capo» se desideri visualizzare la Numero di elementi selezionati in verticale all'interno della cella. Se preferisci un elenco orizzontale, lascia deselezionata questa opzione.
- Seleziona l’opzione «Abilita funzione di ricerca» per aggiungere una barra di ricerca al tuo elenco a discesa.
- Per utilizzare questa funzionalità, ti invitiamo prima a scaricare e installare Kutools per Excel.
Altre operazioni per gli elenchi a discesa multi-selezione Elenco a discesa
Questa sezione raccoglie diversi scenari che potrebbero presentarsi quando si abilitano selezioni multiple negli elenchi a discesa tramite la convalida dati «Elenco a discesa».
Consentire elementi duplicati in Elenco a discesa
I duplicati possono diventare un problema quando sono consentite selezioni multiple in un elenco a discesa. Il codice VBA indicato sopra impedisce l’inserimento di elementi duplicati nell’elenco a discesa. Se invece desideri conservare i duplicati, prova il codice VBA presentato in questa sezione.
Codice VBA: Consenti duplicati nella convalida dati Elenco a discesa
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
Target.Value = xValue1 & delimiter & xValue2
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub
Risultato
Ora puoi selezionare più elementi dall’elenco a discesa nel foglio di lavoro corrente. Per ripetere un elemento in una cella con elenco a discesa, continua a selezionarlo dall’elenco. Vedi screenshot:

Rimuovere elementi esistenti da Elenco a discesa
Dopo aver selezionato più elementi da un elenco a discesa, potresti aver bisogno di rimuovere un elemento già presente dalla cella. Questa sezione include un ulteriore frammento di codice VBA per semplificarti questa operazione.
Codice VBA: Rimuovi qualsiasi elemento esistente dalla cella Elenco a discesa
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRngDV As Range
Dim TargetRange As Range
Dim oldValue As String
Dim newValue As String
Dim delimiter As String
Dim allValues As Variant
Dim valueExists As Boolean
Dim i As Long
Dim cleanedValue As String
Set TargetRange = Me.UsedRange ' Set your specific range here
delimiter = ", " ' Set your desired delimiter here
If Target.CountLarge > 1 Then Exit Sub
' Check if the change is within the specific range
If Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRngDV = Target.SpecialCells(xlCellTypeAllValidation)
If xRngDV Is Nothing Or Target.Value = "" Then
' Skip if there's no data validation or if the cell is cleared
Application.EnableEvents = True
Exit Sub
End If
On Error GoTo 0
If Not Intersect(Target, xRngDV) Is Nothing Then
Application.EnableEvents = False
newValue = Target.Value
Application.Undo
oldValue = Target.Value
Target.Value = newValue
' Split the old value by delimiter and check if new value already exists
allValues = Split(oldValue, delimiter)
valueExists = False
For i = LBound(allValues) To UBound(allValues)
If Trim(allValues(i)) = newValue Then
valueExists = True
Exit For
End If
Next i
' Add or remove value based on its existence
If valueExists Then
' Remove the value
cleanedValue = ""
For i = LBound(allValues) To UBound(allValues)
If Trim(allValues(i)) <> newValue Then
If cleanedValue <> "" Then cleanedValue = cleanedValue & delimiter
cleanedValue = cleanedValue & Trim(allValues(i))
End If
Next i
Target.Value = cleanedValue
Else
' Add the value
If oldValue <> "" Then
Target.Value = oldValue & delimiter & newValue
Else
Target.Value = newValue
End If
End If
Application.EnableEvents = True
End If
End Sub
Risultato
Questo codice VBA ti consente di selezionare più elementi da un elenco a discesa e di rimuovere facilmente qualsiasi voce già scelta. Dopo aver effettuato una selezione multipla, per eliminare un elemento specifico basta semplicemente selezionarlo nuovamente dall’elenco.

Impostare un separatore personalizzato
Nei codici VBA riportati sopra, il delimitatore è impostato sulla virgola. Puoi modificarlo sostituendolo con qualsiasi carattere desideri utilizzare come separatore per le selezioni negli elenchi a discesa. Ecco come fare:
Come puoi notare, tutti i codici VBA sopra riportati contengono la seguente riga:
delimiter = ", "
Devi semplicemente sostituire la virgola con il separatore desiderato. Ad esempio, se vuoi separare gli elementi con un punto e virgola, modifica la riga in:
delimiter = "; "
delimiter = vbNewLine
Impostazione di un Intervallo limitato
I codici VBA riportati sopra si applicano a tutti gli elenchi a discesa presenti nel foglio di lavoro corrente. Se invece desideri applicarli solo a un intervallo specifico di elenchi a discesa, puoi indicare tale intervallo direttamente nel codice VBA come segue.
Come puoi notare, tutti i codici VBA sopra riportati contengono la seguente riga:
Set TargetRange = Me.UsedRange
Devi semplicemente modificare la riga in:
Set TargetRange = Me.Range("C2:C10")
Esecuzione in un foglio protetto
Immagina di aver protetto un foglio di lavoro con la password "123", avendo precedentemente impostato le celle con elenco a discesa su «Sbloccate» prima di attivare la protezione, in modo da mantenere attiva la funzione di selezione multipla anche dopo il blocco. Tuttavia, i codici VBA illustrati in precedenza non funzionano in questo scenario: questa sezione presenta uno script VBA appositamente progettato per gestire la selezione multipla in un foglio protetto.
Codice VBA: Abilita selezione multipla in Elenco a discesa senza duplicati
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Dim isProtected As Boolean
Dim pswd As Variant
Set TargetRange = Me.UsedRange ' Set your specific range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
' Check if sheet is protected
isProtected = Me.ProtectContents
If isProtected Then
' If protected, temporarily unprotect. Adjust or remove the password as needed.
pswd = "yourPassword" ' Change or remove this as needed
Me.Unprotect Password:=pswd
End If
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then
If isProtected Then Me.Protect Password:=pswd
Exit Sub
End If
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If
Application.EnableEvents = True
On Error GoTo 0
' Re-protect the sheet if it was protected
If isProtected Then
Me.Protect Password:=pswd
End If
End Sub
Abilitando le selezioni multiple negli elenchi a discesa di Excel, puoi migliorare notevolmente la funzionalità e la flessibilità dei tuoi fogli di lavoro. Che tu sia a tuo agio con la programmazione VBA o preferisca una soluzione più semplice come Kutools, ora hai la possibilità di trasformare i tuoi normali elenchi a discesa in strumenti dinamici a selezione multipla. Con queste competenze, sei pronto a creare documenti Excel più dinamici e intuitivi. Se desideri approfondire ulteriormente le potenzialità di Excel, il nostro sito web offre numerosi tutorial.Scopri altri suggerimenti e trucchi per Excel qui.
Articoli correlati
Completamento automatico durante la digitazione in un elenco a discesa di Excel
Se hai un elenco a discesa con convalida dati contenente molti valori, devi scorrere l’elenco per trovare quello giusto oppure digitare manualmente l’intera parola nella casella. Ma immagina se potessi attivare il completamento automatico semplicemente digitando la prima lettera: tutto diventerebbe molto più semplice! Questo tutorial ti mostra come risolvere il problema.
Creare un elenco a discesa da un'altra cartella di lavoro in Excel
Creare un elenco a discesa con la convalida dati tra fogli della stessa cartella di lavoro è piuttosto semplice. Ma cosa fare se i dati necessari per la convalida si trovano in un’altra cartella di lavoro? In questo tutorial scoprirai passo dopo passo come creare un elenco a discesa da un’altra cartella di lavoro in Excel.
Crea un elenco a discesa ricercabile in Excel
Quando un elenco a discesa contiene numerosi valori, trovare quello giusto diventa tutt’altro che semplice. In passato abbiamo mostrato un metodo per completare automaticamente l’elenco non appena si digita la prima lettera nella cella. Oltre al completamento automatico, puoi rendere il tuo elenco a discesa ancora più efficiente trasformandolo in un elenco ricercabile. Scopri come fare con il metodo illustrato in questo tutorial!
Compila automaticamente altre celle selezionando valori da un elenco a discesa di Excel
Immagina di aver creato un elenco a discesa basato sui valori nell’intervallo B8:B14. Quando selezioni un valore dall’elenco, vorresti che il corrispondente valore presente nell’intervallo C8:C14 venga inserito automaticamente in una cella specificata. I metodi illustrati in questo tutorial ti saranno di grande aiuto per risolvere proprio questo problema.
Migliori strumenti per la produttività in Office
Potenzia le tue competenze in Excel con Kutools per Excel e sperimenta un’efficienza mai vista prima.Kutools per Excel offre oltre 300 funzionalità avanzate per aumentare la produttività e Risparmia tempo.Clicca qui per ottenere la funzionalità di cui hai più bisogno...
Office Tab Porta l'interfaccia a schede in Office e rende il tuo lavoro molto più semplice
- Abilita la modifica e la lettura a schede in Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
- Apri e crea più documenti in nuove schede della stessa finestra, invece che in finestre separate.
- Aumenta la tua produttività del 50 % e riduci centinaia di clic del mouse ogni giorno!
Tutti i componenti aggiuntivi di Kutools in un unico programma di installazione.
Kutools for Office è la suite che include componenti aggiuntivi per Excel, Word, Outlook e PowerPoint, oltre a Office Tab Pro: la soluzione ideale per i team che lavorano su diverse applicazioni Office.
- Suite completa— componenti aggiuntivi per Excel, Word, Outlook e PowerPoint + Office Tab Pro
- Un programma di installazione, una licenza— configurazione in pochi minuti (pronto per MSI)
- Funzionano meglio insieme— produttività ottimizzata tra le applicazioni Office
- Prova gratuita di 30 giorni con tutte le funzionalità— nessuna registrazione, nessuna carta di credito
- Miglior rapporto qualità-prezzo— risparmia rispetto all'acquisto dei singoli componenti aggiuntivi
Indice
- Abilitazione di selezioni multiple
- Utilizzo di codice VBA
- Utilizzo di Kutools per Excel in pochi clic
- Altre operazioni
- Consentire elementi duplicati
- Rimuovere eventuali elementi esistenti
- Impostare un separatore personalizzato
- Impostare un Intervallo limitato
- Esecuzione in un foglio protetto
- Articoli correlati
- I migliori strumenti per la produttività in Office
- Commenti

