Seleccionar varios elementos en la lista desplegable de Excel – guía completa
Las listas desplegables en Excel son una herramienta fantástica para garantizar la consistencia de los datos y facilitar su ingreso. Sin embargo, por defecto, solo permiten seleccionar un único elemento. ¿Pero qué pasa si necesitas seleccionar varios elementos de la misma lista desplegable? Esta guía completa explorará métodos para habilitar selecciones múltiples en las listas desplegables de Excel, gestionar duplicados, establecer separadores personalizados y definir el ámbito de estas listas.
- Permitir elementos duplicados
- Eliminar cualquier elemento existente
- Establecer un separador personalizado
- Definir un rango específico
- Ejecutar en una hoja de trabajo protegida
Habilitar selecciones múltiples en la lista desplegable
Esta sección proporciona dos métodos para ayudarte a habilitar selecciones múltiples en la lista desplegable en Excel.
Usando código VBA
Para permitir selecciones múltiples en una lista desplegable, puedes usar "Visual Basic for Applications" (VBA) en Excel. El script puede modificar el comportamiento de una lista desplegable para convertirla en una lista de selección múltiple. Por favor, sigue estos pasos.
Paso 1: Abrir el editor de la Hoja (Código)
- Abre la hoja de trabajo que contiene la lista desplegable en la que deseas habilitar la selección múltiple.
- Haz clic derecho en la pestaña de la hoja y selecciona "Ver Código" desde el menú contextual.
Paso 2: Usar código VBA
Ahora copia el siguiente código VBA y pégalo en la ventana de la hoja (Código) que se ha abierto.
Código VBA: Habilitar selecciones múltiples en la lista desplegable de 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
Resultado
Cuando regreses a la hoja de trabajo, la lista desplegable te permitirá elegir varias opciones; consulta la demostración a continuación:
El código VBA anterior:
- Se aplica a todas las listas desplegables de validación de datos en la hoja de trabajo actual, tanto las existentes como las creadas en el futuro.
- Te impide seleccionar el mismo elemento más de una vez en cada lista desplegable.
- Utiliza la coma como separador para los elementos seleccionados. Para usar otros delimitadores, consulta esta sección para cambiar el separador.
Usando Kutools para Excel en pocos clics
Si no te sientes cómodo con VBA, una alternativa más fácil es la función "Lista desplegable de selección múltiple" de "Kutools para Excel". Esta herramienta fácil de usar simplifica la habilitación de selecciones múltiples en las listas desplegables, permitiéndote personalizar el separador y gestionar duplicados sin esfuerzo para satisfacer tus diferentes necesidades.
Después de instalar Kutools para Excel, ve a la pestaña "Kutools", selecciona "Lista desplegable" > "Lista desplegable de selección múltiple". Luego, necesitarás configurar lo siguiente.
- Especifica el rango que contiene la lista desplegable de la cual necesitas seleccionar varios elementos.
- Especifica el separador para los elementos seleccionados en la celda de la lista desplegable.
- Haz clic en "Aceptar" para completar la configuración.
Resultado
Ahora, cuando hagas clic en una celda con una lista desplegable en el rango especificado, aparecerá una lista al lado. Simplemente haz clic en el botón "+" junto a los elementos para agregarlos a la celda desplegable, y haz clic en el botón "-" para eliminar cualquier elemento que ya no quieras. Consulta la demostración a continuación:
- Marca la opción "Insertar salto de línea después del separador" si deseas mostrar los elementos seleccionados verticalmente dentro de la celda. Si prefieres una lista horizontal, deja esta opción desmarcada.
- Marca la opción "Habilitar búsqueda" si deseas agregar una barra de búsqueda a tu lista desplegable.
- Para aplicar esta función, descarga e instala Kutools para Excel primero.
Más operaciones para la lista desplegable de selección múltiple
Esta sección recopila los diferentes escenarios que pueden ser necesarios al habilitar selecciones múltiples en la lista desplegable de Validación de Datos.
Permitir elementos duplicados en la lista desplegable
Los duplicados pueden ser un problema cuando se permiten selecciones múltiples en una lista desplegable. El código VBA anterior no permite elementos duplicados en la lista desplegable. Si necesitas mantener elementos duplicados, prueba el código VBA en esta sección.
Código VBA: Permitir duplicados en la lista desplegable de validación de datos
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
Resultado
Ahora puedes seleccionar varios elementos de las listas desplegables en la hoja de trabajo actual. Para repetir un elemento en una celda de la lista desplegable, sigue seleccionando ese elemento de la lista. Ver captura de pantalla:
Eliminar cualquier elemento existente de la lista desplegable
Después de seleccionar varios elementos de una lista desplegable, a veces puede ser necesario eliminar un elemento existente de la celda de la lista desplegable. Esta sección proporciona otro fragmento de código VBA para ayudarte a realizar esta tarea.
Código VBA: Eliminar cualquier elemento existente de la celda de la lista desplegable
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
Resultado
Este código VBA te permite seleccionar varios elementos de una lista desplegable y eliminar fácilmente cualquier elemento que ya hayas elegido. Después de seleccionar varios elementos, si deseas eliminar uno específico, simplemente selecciónalo nuevamente de la lista.
Establecer un separador personalizado
El delimitador está configurado como una coma en los códigos VBA anteriores. Puedes modificar esta variable a cualquier carácter preferido para usarlo como separador de las selecciones de la lista desplegable. Aquí te mostramos cómo hacerlo:
Como puedes ver, los códigos VBA anteriores tienen la siguiente línea:
delimiter = ", "
Solo necesitas cambiar la coma por cualquier separador que necesites. Por ejemplo, si deseas separar los elementos con punto y coma, cambia la línea a:
delimiter = "; "
delimiter = vbNewLine
Definir un rango específico
Los códigos VBA anteriores se aplican a todas las listas desplegables en la hoja de trabajo actual. Si solo quieres que los códigos VBA se apliquen a un cierto rango de listas desplegables, puedes especificar el rango en el código VBA anterior de la siguiente manera.
Como puedes ver, los códigos VBA anteriores tienen la siguiente línea:
Set TargetRange = Me.UsedRange
Solo necesitas cambiar la línea a:
Set TargetRange = Me.Range("C2:C10")
Ejecutar en una hoja de trabajo protegida
Imagina que has protegido una hoja de trabajo con la contraseña "123" y configuraste las celdas de la lista desplegable como "Desbloqueadas" antes de activar la protección, asegurándote de que la función de selección múltiple siga activa después de la protección. Sin embargo, los códigos VBA mencionados anteriormente no funcionan en este caso, y esta sección describe otro script VBA diseñado específicamente para manejar la funcionalidad de selección múltiple en una hoja de trabajo protegida.
Código VBA: Habilitar selección múltiple en la lista desplegable sin duplicados
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
Al habilitar selecciones múltiples en las listas desplegables de Excel, puedes mejorar enormemente la funcionalidad y flexibilidad de tus hojas de trabajo. Ya sea que te sientas cómodo con la codificación VBA o prefieras una solución más directa como Kutools, ahora tienes la capacidad de transformar tus listas desplegables estándar en herramientas dinámicas de selección múltiple. Con estas habilidades, estás equipado para crear documentos de Excel más dinámicos y fáciles de usar. Para aquellos ansiosos por profundizar en las capacidades de Excel, nuestro sitio web cuenta con una gran cantidad de tutoriales. Descubre más consejos y trucos de Excel aquí.
Artículos relacionados
Autocompletar al escribir en la lista desplegable de Excel
Si tienes una lista desplegable de validación de datos con muchos valores, necesitas desplazarte hacia abajo en la lista solo para encontrar el adecuado, o escribir la palabra completa directamente en el cuadro de lista. Si hubiera un método que permitiera autocompletar al escribir la primera letra en la lista desplegable, todo sería más fácil. Este tutorial proporciona el método para resolver el problema.
Crear una lista desplegable desde otro libro en Excel
Es bastante fácil crear una lista desplegable de validación de datos entre hojas de trabajo dentro de un libro. Pero si los datos de la lista que necesitas para la validación están en otro libro, ¿qué harías? En este tutorial, aprenderás cómo crear una lista desplegable desde otro libro en Excel detalladamente.
Crear una lista desplegable buscable en Excel
Para una lista desplegable con numerosos valores, encontrar uno adecuado no es una tarea fácil. Previamente hemos introducido un método de autocompletar la lista desplegable al ingresar la primera letra en el cuadro desplegable. Además de la función de autocompletar, también puedes hacer que la lista desplegable sea buscable para mejorar la eficiencia en la búsqueda de valores adecuados en la lista desplegable. Para hacer que la lista desplegable sea buscable, prueba el método en este tutorial.
Autocompletar otras celdas al seleccionar valores en la lista desplegable de Excel
Supongamos que has creado una lista desplegable basada en los valores en el rango de celdas B8:B14. Al seleccionar cualquier valor en la lista desplegable, quieres que los valores correspondientes en el rango de celdas C8:C14 se completen automáticamente en una celda seleccionada. Para resolver el problema, los métodos en este tutorial te ayudarán.
Las mejores herramientas de productividad para Office
Mejora tu dominio de Excel con Kutools para Excel y experimenta una eficiencia sin precedentes. Kutools para Excel ofrece más de300 funciones avanzadas para aumentar la productividad y ahorrar tiempo. Haz clic aquí para obtener la función que más necesitas...
Office Tab incorpora la interfaz de pestañas en Office y facilita mucho tu trabajo
- Habilita la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
- Abre y crea varios documentos en nuevas pestañas de la misma ventana, en lugar de hacerlo en ventanas separadas.
- ¡Aumenta tu productividad en un50% y reduce cientos de clics de ratón cada día!
Todos los complementos de Kutools. Un solo instalador
El paquete Kutools for Office agrupa complementos para Excel, Word, Outlook y PowerPoint junto con Office Tab Pro, ideal para equipos que trabajan en varias aplicaciones de Office.





- Suite todo en uno: complementos para Excel, Word, Outlook y PowerPoint + Office Tab Pro
- Un solo instalador, una licencia: configuración en minutos (compatible con MSI)
- Mejor juntos: productividad optimizada en todas las aplicaciones de Office
- Prueba completa de30 días: sin registro ni tarjeta de crédito
- La mejor relación calidad-precio: ahorra en comparación con la compra individual de complementos
Tabla de contenidos
- Habilitar selecciones múltiples
- Usando código VBA
- Usando Kutools para Excel en pocos clics
- Más operaciones
- Permitir elementos duplicados
- Eliminar cualquier elemento existente
- Establecer un separador personalizado
- Definir un rango específico
- Ejecutar en una hoja de trabajo protegida
- Artículos relacionados
- Las mejores herramientas de productividad para Office
- Comentarios