KutoolsforOffice — Un'unica soluzione, cinque potenti strumenti.Ottenere di più con meno sforzo.

Seleziona più elementi negli elenchi a discesa di Excel Elenco a discesa – guida completa

AutoreSiluvia Data di modifica

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.

Uno screenshot della demo animata che mostra selezioni multiple in un elenco a discesa di Excel.

Suggerimento: Prima di applicare i seguenti metodi, assicurati di aver già creato Elenco a discesa nei tuoi fogli di lavoro. Se desideri sapere come creare elenchi a discesa con Convalida dati Elenco a discesa, segui le istruzioni in questo articolo:Come creare elenchi a discesa con Convalida dati Elenco a discesa in Excel.

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)
  1. Apri il foglio di lavoro che contiene l’elenco a discesa per cui desideri abilitare la selezione multipla.
  2. Fai clic con il pulsante destro del mouse sulla scheda del foglio e seleziona **«Visualizza codice»** dal menu contestuale.
    Uno screenshot dell'opzione Visualizza codice nel menu contestuale di una scheda foglio in Excel
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

Uno screenshot del codice VBA incollato nell'editor VBA di Excel

Risultato

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

Uno screenshot della demo animata che mostra selezioni multiple in un elenco a discesa di Excel

Note:
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.

Kutools per Exceloffre oltre 300 funzionalità avanzate per semplificare attività complesse, aumentando creatività ed efficienza.Integrato con funzionalità AI, Kutools automatizza le attività con precisione, rendendo la gestione dei dati semplice e immediata.Informazioni dettagliate su Kutools per Excel...         Prova gratuita...

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.

  1. Specifica l'intervallo contenente l'elenco a discesa da cui devi selezionare più elementi.
  2. Specifica il separatore per il numero di elementi selezionati nell’elenco a discesa.
  3. Fai clic su «OK» per completare la configurazione.
    Uno screenshot della schermata di configurazione dell'elenco a discesa Multi-selezione di Kutools con impostazioni per intervallo e opzioni di separatore
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:

Uno screenshot che mostra una demo della gestione di selezioni multiple in un elenco a discesa di Excel utilizzando Kutools

Note:
  • 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:

Uno screenshot della demo animata che mostra selezioni duplicate in un elenco a discesa di Excel


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.

Uno screenshot della demo animata che mostra come rimuovere elementi esistenti da un elenco a discesa in Excel


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 = "; "
Nota: Per modificare il delimitatore in un carattere di ritorno a capo in questi codici VBA, cambia questa riga in:
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")
Nota: Qui C2:C10 è l’intervallo contenente gli Elenco a discesa che desideri impostare per selezioni multiple.

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
Nota: Nel codice, assicurati di sostituire “yourPassword” nella riga pswd = «yourPassword» con la password effettiva utilizzata per proteggere il foglio di lavoro. Ad esempio, se la tua password è "abc123", la riga dovrà essere pswd = "abc123".

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.

Migliori strumenti per la produttività in Office

🤖KUTOOLS AI Assistente: Rivoluziona Analisi dei dati in base a:Esecuzione intelligente   |  Genera codice|  Crea formule personalizzate  |  Analizza dati e genera grafici|  Richiama Funzioni avanzate
Funzionalità popolari:Trova, evidenzia o Contrassegna Duplicati   |  Elimina righe vuote   |  Combinare Colonne o celle senza perdere dati   |   Arrotondamento senza usare la formula...
Super RICERCA.VERT:CercaV con criteri multipli  |  CercaV con valori multipli  |   CercaV tra più fogli   |   Corrispondenza approssimativa....
Elenco a discesa avanzato:Crea rapidamente un elenco a discesa   |  Elenco a discesa dipendente   |  Elenco a discesa con selezione multipla....
Gestione colonne:Aggiungi un numero specifico di colonne|Sposta colonne|Attiva/disattiva la visibilità delle colonne nascoste|Confronta intervalli e colonne...
Funzionalità in evidenza:Attenzione della griglia   |  Visualizzazione Design   |Barra delle formule avanzata   | Gestione cartelle di lavoro e fogli   |  Biblioteca di risorse(Testo automatico)|  Selettore di Date   |  Unisci fogli di lavoro  |  Crittografa/Decrittografa celle   | Invia email da elenco   |  Super Filtri   |   Filtro speciale(Filtra celle con testo in grassetto/corsivo/barrato...) ...
Principali set di strumenti 15:12 Strumentiper il testo(Aggiungi testo,Elimina Caratteri Specifici, ...)|   50+Tipidi grafico(Diagramma di Gantt, ...)|   40+ Formule pratiche(Calcola l'età in base alla data di nascita, ...)|   19 Strumentidi inserimento(Inserisci Codice QR,Inserisci immagine dal percorso, ...)|   12 Strumentidi conversione(Converti in parole,Conversione del tasso di cambio, ...)|   7 StrumentiUnisci e Dividi(Unione avanzata righe,Dividi celle, ...)|... e molto altro
Usa Kutools nella tua lingua preferita – supporta inglese, spagnolo, tedesco, francese, cinese e 40+ altre!

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.

ExcelWordOutlookTabsPowerPoint
  • 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