Seleziona più elementi nell'elenco a discesa di Excel: guida completa
Gli elenchi a discesa di Excel sono uno strumento fantastico per garantire la coerenza dei dati e la facilità di immissione. Tuttavia, per impostazione predefinita, ti limitano a selezionare un solo elemento. Ma cosa succede se devi selezionare più elementi dallo stesso elenco a discesa? Questa guida completa esplorerà i 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
- Rimozione di eventuali elementi esistenti
- Impostazione di un separatore personalizzato
- Impostazione di un intervallo specificato
- Esecuzione in un foglio di lavoro protetto
Abilitazione di selezioni multiple nell'elenco a discesa
Questa sezione fornisce due metodi per aiutarti ad abilitare più selezioni nell'elenco a discesa in Excel.
Utilizzando il codice VBA
Per consentire selezioni multiple nell'elenco a discesa, è possibile utilizzare Visual Basic, Applications Edition (VBA) in Excel. Lo script può modificare il comportamento di un elenco a discesa per renderlo un elenco a scelta multipla. Si prega di fare quanto segue.
Passaggio 1: aprire l'editor del foglio (codice).
- Apri il foglio di lavoro che contiene l'elenco a discesa per il quale desideri abilitare la selezione multipla.
- Fare clic con il tasto destro sulla scheda del foglio e selezionare Visualizza codice dal menu di scelta rapida.
Passaggio 2: utilizza il codice VBA
Ora copia il seguente codice VBA e incollalo nella finestra del foglio di apertura (Codice).
Codice VBA: abilita più selezioni nell'elenco 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, l'elenco a discesa ti consentirà di scegliere più opzioni, vedere la demo di seguito:
Il codice VBA sopra:
- Si applica a tutti gli elenchi a discesa di convalida dei dati nel foglio di lavoro corrente, sia esistenti che quelli creati in futuro.
- Impedisce di selezionare lo stesso elemento più di una volta in ciascun elenco a discesa.
- Utilizza la virgola come separatore per gli elementi selezionati. Per utilizzare altri delimitatori, per favore visualizzare questa sezione per modificare il separatore.
Utilizzando Kutools per Excel in pochi clic
Se non ti senti a tuo agio con VBA, un'alternativa più semplice è Kutools for Excel's Elenco a discesa a selezione multipla caratteristica. Questo strumento intuitivo semplifica l'attivazione di selezioni multiple negli elenchi a discesa, consentendoti di personalizzare il separatore e gestire i duplicati senza sforzo per soddisfare le diverse esigenze.
Dopo shavasana, sedersi in silenzio; saluti; installazione di Kutools per Excel, Andare al Kutools scheda, selezionare Menu `A tendina > Elenco a discesa a selezione multipla. Quindi è necessario configurare come segue.
- Specificare l'intervallo contenente l'elenco a discesa da cui è necessario selezionare più elementi.
- Specificare il separatore per gli elementi selezionati nella cella dell'elenco a discesa.
- Clicchi OK per completare le impostazioni.
Risultato
Ora, quando fai clic su una cella con un elenco a discesa nell'intervallo specificato, accanto ad essa verrà visualizzata una casella di riepilogo. Basta fare clic sul pulsante "+" accanto agli elementi per aggiungerli alla cella a discesa e fare clic sul pulsante "-" per rimuovere tutti gli elementi che non desideri più. Guarda la demo qui sotto:
- Controlla il Avvolgi il testo dopo aver inserito un separatore opzione se desideri visualizzare gli elementi selezionati verticalmente all'interno della cella. Se preferisci un elenco orizzontale, lascia questa opzione deselezionata.
- Controlla il Abilita ricerca opzione se desideri aggiungere una barra di ricerca all'elenco a discesa.
- Per applicare questa funzione, per favore scarica e installa Kutools per Excel prima.
Ulteriori operazioni per l'elenco a discesa a selezione multipla
Questa sezione raccoglie i diversi scenari che potrebbero essere richiesti quando si abilitano più selezioni nell'elenco a discesa Convalida dati.
Consentire elementi duplicati nell'elenco a discesa
I duplicati possono rappresentare un problema quando sono consentite più selezioni in un elenco a discesa. Il codice VBA sopra non consente elementi duplicati nell'elenco a discesa. Se devi conservare elementi duplicati, prova il codice VBA in questa sezione.
Codice VBA: consenti duplicati nell'elenco a discesa di convalida dei dati
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 dagli elenchi a discesa nel foglio di lavoro corrente. Per ripetere un elemento in una cella dell'elenco a discesa, continua a selezionare l'elemento dall'elenco. Vedi schermata:
Rimozione di eventuali elementi esistenti dall'elenco a discesa
Dopo aver selezionato più elementi da un elenco a discesa, a volte potrebbe essere necessario rimuovere un elemento esistente dalla cella dell'elenco a discesa. Questa sezione fornisce un'altra parte di codice VBA per aiutarti a eseguire questa attività.
Codice VBA: rimuovi tutti gli elementi esistenti dalla cella dell'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 rimuovere facilmente qualsiasi elemento che hai già scelto. Dopo aver selezionato più elementi, se desideri rimuoverne uno specifico, selezionalo semplicemente nuovamente dall'elenco.
Impostazione di un separatore personalizzato
Il delimitatore è impostato come virgola nei codici VBA sopra. È possibile modificare questa variabile con qualsiasi carattere preferito da utilizzare come separatore per le selezioni dell'elenco a discesa. Ecco come puoi fare:
Come puoi vedere, i codici VBA sopra hanno tutti la seguente riga:
delimiter = ", "
Devi solo cambiare la virgola in qualsiasi separatore di cui hai bisogno. Ad esempio, se desideri separare gli elementi tramite punto e virgola, modifica la riga in:
delimiter = "; "
delimiter = vbNewLine
Impostazione di un intervallo specificato
I codici VBA sopra riportati si applicano a tutti gli elenchi a discesa nel foglio di lavoro corrente. Se desideri che i codici VBA si applichino solo a un determinato intervallo di elenchi a discesa, puoi specificare l'intervallo nel codice VBA sopra come segue.
Come puoi vedere, i codici VBA sopra hanno tutti la seguente riga:
Set TargetRange = Me.UsedRange
Devi solo cambiare la riga in:
Set TargetRange = Me.Range("C2:C10")
Esecuzione in un foglio di lavoro protetto
Immagina di aver protetto un foglio di lavoro con la password "123" e imposta le celle dell'elenco a discesa su "Sbloccato" prima di attivare la protezione, garantendo così che la funzione di selezione multipla rimanga attiva dopo la protezione. Tuttavia, i codici VBA menzionati sopra non possono funzionare in questo caso e questa sezione descrive un altro script VBA specificamente progettato per gestire la funzionalità di selezione multipla in un foglio di lavoro protetto.
Codice VBA: abilita la selezione multipla nell'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 selezioni multiple negli elenchi a discesa di Excel, puoi migliorare notevolmente la funzionalità e la flessibilità dei tuoi fogli di lavoro. Che tu abbia dimestichezza con la codifica VBA o preferisca una soluzione più semplice come Kutools, ora hai la capacità di trasformare i tuoi elenchi a discesa standard in strumenti dinamici a selezione multipla. Con queste competenze, ora sei in grado di creare documenti Excel più dinamici e intuitivi. Per coloro che desiderano approfondire le funzionalità di Excel, il nostro sito Web vanta numerosi tutorial. Scopri altri suggerimenti e trucchi per Excel qui.
Articoli Correlati
Completamento automatico durante la digitazione nell'elenco a discesa di Excel
Se si dispone di un elenco a discesa di convalida dei dati con valori di grandi dimensioni, è necessario scorrere l'elenco solo per trovare quello corretto o digitare direttamente l'intera parola nella casella di riepilogo. Se esiste un metodo per consentire il completamento automatico quando si digita la prima lettera nell'elenco a discesa, tutto diventerà più semplice. Questo tutorial fornisce il metodo per risolvere il problema.
Crea un elenco a discesa da un'altra cartella di lavoro in Excel
È abbastanza facile creare un elenco a discesa di convalida dei dati tra i fogli di lavoro all'interno di una cartella di lavoro. Ma se i dati dell'elenco necessari per la convalida dei dati si trovano in un'altra cartella di lavoro, cosa faresti? In questo tutorial imparerai come creare un elenco a discesa da un'altra cartella di lavoro in Excel in dettaglio.
Crea un elenco a discesa ricercabile in Excel
Per un elenco a discesa con numerosi valori, trovarne uno corretto non è un lavoro facile. In precedenza abbiamo introdotto un metodo di completamento automatico dell'elenco a discesa quando si immette la prima lettera nella casella a discesa. Oltre alla funzione di completamento automatico, è anche possibile rendere ricercabile l'elenco a discesa per migliorare l'efficienza lavorativa nel trovare i valori corretti nell'elenco a discesa. Per rendere ricercabile l'elenco a discesa, prova il metodo in questo tutorial.
Compilare automaticamente altre celle quando si selezionano i valori nell'elenco a discesa di Excel
Supponiamo che tu abbia creato un elenco a discesa basato sui valori nell'intervallo di celle B8: B14. Quando si seleziona un valore nell'elenco a discesa, si desidera che i valori corrispondenti nell'intervallo di celle C8: C14 vengano inseriti automaticamente in una cella selezionata. Per risolvere il problema, i metodi in questo tutorial ti faranno un favore.
I migliori strumenti per la produttività in ufficio
Potenzia le tue competenze di Excel con Kutools per Excel e sperimenta l'efficienza come mai prima d'ora. Kutools per Excel offre oltre 300 funzionalità avanzate per aumentare la produttività e risparmiare tempo. Fai clic qui per ottenere la funzionalità di cui hai più bisogno...
Office Tab porta l'interfaccia a schede in Office e semplifica notevolmente il tuo lavoro
- 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, piuttosto che in nuove finestre.
- Aumenta la produttività del 50% e riduce ogni giorno centinaia di clic del mouse!
Sommario
- Abilitazione di selezioni multiple
- Utilizzo del codice VBA
- Utilizzando Kutools per Excel in pochi clic
- Più operazioni
- Consentire elementi duplicati
- Rimozione di eventuali elementi esistenti
- Impostazione di un separatore personalizzato
- Impostazione di un intervallo specificato
- Esecuzione in un foglio di lavoro protetto
- Articoli Correlati
- I migliori strumenti per la produttività in ufficio
- Commenti