Note: The other languages of the website are Google-translated. Back to English

 ¿Cómo crear una lista desplegable pero mostrar diferentes valores en Excel?

En la hoja de cálculo de Excel, podemos crear rápidamente una lista desplegable con la función de Validación de datos, pero, ¿alguna vez ha intentado mostrar un valor diferente al hacer clic en la lista desplegable? Por ejemplo, tengo los siguientes datos de dos columnas en la Columna A y la Columna B, ahora, necesito crear una lista desplegable con los valores en la columna Nombre, pero, cuando selecciono el nombre de la lista desplegable creada, el correspondiente El valor en la columna Número se muestra como se muestra en la siguiente captura de pantalla. Este artículo presentará los detalles para resolver esta tarea.

doc desplegable diferentes valores 1

Cree una lista desplegable pero muestre un valor diferente en la celda de la lista desplegable


Cree una lista desplegable pero muestre un valor diferente en la celda de la lista desplegable

Para finalizar esta tarea, haga el siguiente paso a paso:

1. Cree un nombre de rango para los valores de celda que desea usar en la lista desplegable, en este ejemplo, ingresaré el nombre desplegable en el Nombre de buzóny luego presione Enviar clave, vea la captura de pantalla:

doc desplegable diferentes valores 2

2. Luego seleccione las celdas donde desea insertar la lista desplegable y haga clic en Data > Validación de datos > Validación de datos, ver captura de pantalla:

doc desplegable diferentes valores 3

3. En la Validación de datos cuadro de diálogo, debajo del Ajustes pestaña, elegir Lista de Permitir desplegable y luego haga clic en doc desplegable diferentes valores 5 para seleccionar la lista Nombre que desea utilizar como valores desplegables en el Fuente caja de texto. Ver captura de pantalla:

doc desplegable diferentes valores 4

4. Después de insertar la lista desplegable, haga clic derecho en la pestaña de la hoja activa y seleccione Ver código desde el menú contextual, y en el Microsoft Visual Basic para aplicaciones ventana, copie y pegue el siguiente código en el módulo en blanco:

Código de VBA: muestra un valor diferente de la lista desplegable:

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice
    selectedNa = Target.Value
    If Target.Column = 5 Then
        selectedNum = Application.VLookup(selectedNa, ActiveSheet.Range("dropdown"), 2, False)
        If Not IsError(selectedNum) Then
            Target.Value = selectedNum
        End If
    End If
End Sub

doc desplegable diferentes valores 6

Nota:: En el código anterior, el número 5 dentro de Si Target.Column = 5 Then script es el número de columna que se encuentra en la lista desplegable, el "desplegable" en esto selectedNum = Application.VLookup (selectedNa, ActiveSheet.Range ("desplegable"), 2, False) code es el nombre del rango que ha creado en el paso 1. Puede cambiarlos según sus necesidades.

5. Luego guarde y cierre este código, ahora, cuando selecciona un elemento de la lista desplegable, se muestra un valor relativamente diferente en la misma celda, vea la captura de pantalla:

doc desplegable diferentes valores 7


Demostración: cree una lista desplegable pero muestre diferentes valores en Excel

Kutools for Excel: con más de 300 prácticos complementos de Excel, prueba gratuita y sin límite en 30 días. ¡Descarga y prueba gratis ahora!

 


Las mejores herramientas de productividad de oficina

Kutools para Excel resuelve la mayoría de sus problemas y aumenta su productividad en un 80%

  • Reutilizar: Inserte rápidamente fórmulas complejas, gráficos y cualquier cosa que hayas usado antes; Cifrar celdas con contraseña; Crear lista de distribución y enviar correos electrónicos ...
  • Barra de súper fórmula (edite fácilmente varias líneas de texto y fórmulas); Diseño de lectura (leer y editar fácilmente un gran número de celdas); Pegar en rango filtrado...
  • Combinar celdas / filas / columnas sin perder datos; Contenido de celdas divididas; Combinar filas / columnas duplicadas... Prevenir celdas duplicadas; Comparar rangos...
  • Seleccione Duplicado o Único Filas; Seleccionar filas en blanco (todas las celdas están vacías); Super Find y Fuzzy Find en muchos libros de trabajo; Selección aleatoria ...
  • Copia exacta Varias celdas sin cambiar la referencia de la fórmula; Crear referencias automáticamente a varias hojas; Insertar viñetas, Casillas de verificación y más ...
  • Extraer texto, Agregar texto, Eliminar por posición, Quitar espacio; Crear e imprimir subtotales de paginación; Convertir entre contenido de celdas y comentarios...
  • Súper filtro (guardar y aplicar esquemas de filtros a otras hojas); Orden avanzado por mes / semana / día, frecuencia y más; Filtro especial en negrita, cursiva ...
  • Combinar libros y hojas de trabajo; Combinar tablas basadas en columnas clave; Dividir datos en varias hojas; Conversión por lotes de xls, xlsx y PDF...
  • Más de 300 potentes funciones. Compatible con Office/Excel 2007-2021 y 365. Compatible con todos los idiomas. Fácil implementación en su empresa u organización. Funciones completas Prueba gratuita de 30 días. Garantía de devolución de dinero de 60 días.
pestaña kte 201905

Office Tab lleva la interfaz con pestañas a Office y hace que su trabajo sea mucho más fácil

  • Habilite la edición y lectura con pestañas en Word, Excel, PowerPoint, Publisher, Access, Visio y Project.
  • Abra y cree varios documentos en nuevas pestañas de la misma ventana, en lugar de en nuevas ventanas.
  • ¡Aumenta su productividad en un 50% y reduce cientos de clics del mouse todos los días!
officetab parte inferior

 

Comentarios (42)
Aún no hay calificaciones. ¡Sé el primero en calificar!
Este comentario fue minimizado por el moderador en el sitio
¿Se puede hacer en hojas diferentes? Quiero decir, en la hoja 1 el menú desplegable y en la hoja 2 el rango. ¿Cómo tengo que codificar esto? Gracias por adelantado. Tina.
Este comentario fue minimizado por el moderador en el sitio
¿Qué pasa si quiero hacer más de un menú desplegable que devuelva diferentes valores en la misma hoja de cálculo? ¿Me puede mostrar un ejemplo de la codificación de dos o más?
Este comentario fue minimizado por el moderador en el sitio
Lee Ann

Si simplemente copia y pega el código de If a EndIf y cambia el número de columna y la tabla, debería funcionar:


Sub Worksheet_change (objetivo BYVAL como rango)
seleccionadoNa = Objetivo.Valor
Si Target.Column = 5 Then
selectedNum = Application.VLookup (selectedNa, ActiveSheet.Range ("desplegable"), 2, False)
Si no es un error (número seleccionado), entonces
Destino.Valor = númeroSeleccionado
Si terminar
Si terminar
Si Target.Column = 9 Then
númeroSeleccionado = Aplicación.VLookup(Na seleccionado, HojaActiva.Range("desplegable1"), 2, Falso)
Si no es un error (número seleccionado), entonces
Destino.Valor = númeroSeleccionado
Si terminar
Si terminar
End Sub

No digo que esta sea la forma correcta, pero funcionó en mi versión de prueba. estoy usando Excel 2013
Este comentario fue minimizado por el moderador en el sitio
Acabo de probarlo. ¡¡Y funcionó!! Gracias.
Este comentario fue minimizado por el moderador en el sitio
Hola, ayuda, no funciona, ¿puedes pegar aquí todo el código para 2 columnas?
Este comentario fue minimizado por el moderador en el sitio
Tony: Correcto, pero el próximo paso es evitar alentar: a) violaciones del Principio DRY (y por lo tanto aumentar: a.1) posibilidades de errores y costos para solucionarlos y a.2) costos de posibles cambios/mejoras futuras) por no fomentar la programación "Copiar-Pegar" al mostrar cómo se puede "refactorizar" para reducir el código duplicado, yb) constantes literales codificadas ("mágicas" "número" / "cadena") al declarar y usar Constantes con nombre que son mucho más difícil de escribir mal sin desencadenar un error del compilador. Las únicas cosas diferentes entre los dos bloques de código copiados y pegados son los números de columna y los nombres de los rangos, por lo que, en la medida de lo posible, todo lo demás no debe duplicarse, por lo que, en cambio, el código debe ser, por ejemplo:

' -- NOTA: Declare "EmptyString" en un módulo de declaraciones globales.
Public Const EmptyString as String = ""

' -- Números de columna. NOTA: En la práctica, por ejemplo, "Col5Header" sería, por ejemplo, "ProductID", y "Col9Header" sería, por ejemplo, "SalesID".
Private Const Col5HeaderColumnNumber As Integer = 5
Private Const Col9HeaderColumnNumber As Integer = 9

' -- Nombres de rango de listas desplegables de columnas
Private Const Col5HeaderDropDownRangeName as String = "col5HeaderDropDownRangeName"
Private Const Col9HeaderDropDownRangeName as String = "col9HeaderDropDownRangeName"

Subhoja de trabajo_Cambiar _
( _
ByVal Objetivo como rango _
)

' -- COMENZAR Para las =columnas correspondientes, extraiga el ID para la descripción seleccionada de las listas desplegables.
Dim dropDownListRangeName como cadena
dropDownListRangeName = Cadena Vacía
Seleccionar Caso Destino.Columna
Caso Col5HeaderColumnNumber
dropDownListRangeName = Col5HeaderDropDownRangeName
Caso Col9HeaderColumnNumber
dropDownListRangeName = Col9HeaderDropDownRangeName
End Select ' -- Caso Target.Column
Si (dropDownListRangeName <> cadena vacía) Entonces
Atenuar ID seleccionado como cadena
ID seleccionado = Application.VLookup(selectedNa, ActiveSheet.Range(dropDownListRangeName), 2, False)
Si no es un error (ID seleccionado), entonces
Destino.Valor = IDSeleccionado
End If ' -- Not IsError(selectedId)
End If ' -- (dropDownListRangeName <> cadena vacía)
-- FIN Para las =columnas correspondientes, extraiga el ID para la descripción seleccionada de las listas desplegables.

End Sub
Este comentario fue minimizado por el moderador en el sitio
No hay nada más frustrante que escribir una pregunta detallada solo para que se quede sin palabras. Si escribe el código de 6 dígitos incorrecto para verificar su humano, borra el mensaje publicado. Podría querer arreglar eso. Ahora mi comentario es este: Traté de hacer exactamente lo mismo que mostraste en el video y las instrucciones escritas y todo lo que obtengo es que cuando selecciono un nombre en la lista es el nombre y no el número. Además, ¿cómo funciona esto, ya que la validación de datos debería limitar las opciones solo a lo que está en la lista? ¿Cómo engaña esto al sistema? En el pasado, siempre tuve que asignar un código vba a un botón o un acceso directo, ¿cómo se activa este código? ¿Cómo se prueba para asegurarse de que funciona?
Este comentario fue minimizado por el moderador en el sitio
¿Cómo funciona la fórmula cuando desea agregar los datos en una hoja separada en el libro de trabajo? Quiero ocultar los datos.
Este comentario fue minimizado por el moderador en el sitio
¡Cambia aquí hermano!
NúmSeleccionado = Aplicación.VLookup(N seleccionado, Hojas de Trabajo("NombreDeSuHoja").Rango("desplegable"), 2, Falso)
Este comentario fue minimizado por el moderador en el sitio
¿"YourSheetName" hace referencia a la hoja que contiene el rango de datos o la hoja donde quiero usar la lista dropdwon?
Este comentario fue minimizado por el moderador en el sitio
¿Cómo funciona la fórmula cuando desea enumerar los datos en una hoja/pestaña separada en el libro de trabajo?
Este comentario fue minimizado por el moderador en el sitio
esto no funciona en las versiones actuales de Excel, obsoleto. La lista de validación de datos ya no aparece en vba, ya que un objeto de Excel ya lo ha intentado varias veces y no aparece.
Este comentario fue minimizado por el moderador en el sitio
En este ejemplo, ¿qué sucede si desea que mire un valor en cada una de las celdas en 5, pero coloque el valor en la celda adyacente en 6?
Este comentario fue minimizado por el moderador en el sitio
¿Cómo debería cambiar el código si quisiera crear una referencia/enlace en E1 a la fuente de la lista desplegable en función del valor seleccionado?
El beneficio sería que, en caso de un cambio en la fuente desplegable (por ejemplo, "Henrik" => "Hendrik", el cambio se reflejaría automáticamente en E1.
Este comentario fue minimizado por el moderador en el sitio
¿Alguien sabe cómo hacer que esto funcione en las hojas de Google?
Este comentario fue minimizado por el moderador en el sitio
Quiero seleccionar varias opciones de la lista desplegable.
resultado como este: AA1001, BB1002
¿es posible?
Este comentario fue minimizado por el moderador en el sitio
¿Encontraste una solución?
Este comentario fue minimizado por el moderador en el sitio
Si los datos de la lista están en otra hoja, ¿cuál sería el código? Gracias.
Este comentario fue minimizado por el moderador en el sitio
como buscar un valor hacia la izquierda
Este comentario fue minimizado por el moderador en el sitio
Sub hoja de trabajo privada_Cambio (según el rango de destino ByVal)
seleccionadoNa = Objetivo.Valor
Si Target.Column = 5 Then

Sheets("Nombre de la hoja en donde esta la lista").Activar
selectedNum = Application.VLookup (selectedNa, ActiveSheet.Range ("desplegable"), 2, False)
Sheets("Nombre de la hoja en donde estas trabajando").Activar
Si no es un error (número seleccionado), entonces
Destino.Valor = númeroSeleccionado
Si terminar
Si terminar
End Sub
Este comentario fue minimizado por el moderador en el sitio
Alguien sabe como buscar el valor de derecha a izquierda
Este comentario fue minimizado por el moderador en el sitio
Necesito usar el mismo menú desplegable en más de una columna, ¿cuál sería el código?
Este comentario fue minimizado por el moderador en el sitio
¡Hola!
¡Esto es realmente útil! ¡Gracias!
Estoy corriendo en la situación en la que la celda no se actualiza automáticamente o cuando uso la función de actualización. Tengo que hacer clic en otra celda y luego volver a hacer clic en la celda en el trabajo para que muestre el valor.
Actualmente estoy trabajando en Office Standard 2019. ¿Alguien sabe si este problema está relacionado con la versión de Excel que estoy usando?
Este comentario fue minimizado por el moderador en el sitio
Hola,
El código funcionaba bien si estábamos definiendo la lista y creando el menú desplegable en la misma hoja.
Pero, ¿cómo podemos lograr definir la lista de valores y códigos en una hoja y el menú desplegable creado en otra hoja?
Este mismo código no funciona, ya que muestra un error en esta línea ("selectedNum = Application.VLookup(selectedNa, ActiveSheet.Range("dropdown"), 2, False)").
Además, tengo un requisito como, si tengo varias listas definidas en una hoja con ID y nombres y múltiples menús desplegables en otra hoja donde un valor desplegable depende del valor seleccionado en otro menú desplegable.

Espero que hayas entendido mi consulta.

Ayúdame a resolver este problema.
Este comentario fue minimizado por el moderador en el sitio
Esto me ayudó inmensamente, gracias. Como mi tabla estaba en una hoja diferente a la del cuadro de lista, agregué un par de líneas de código para lograrlo y también para evitar que la pantalla parpadee.

Application.ScreenUpdating = False
Hojas("HojaConTableOnIt").Activar

Hojas("HojaConDropDownListOnIt").Activar
Application.ScreenUpdating = True
Este comentario fue minimizado por el moderador en el sitio
¿Dónde exactamente agregaste estos códigos?
Este comentario fue minimizado por el moderador en el sitio
Recibo un error de compilación: error de sintaxis en la línea "If Trarget.Column = 6 Then" cuando intento usar el código. ¿Alguna idea del por qué?
Este comentario fue minimizado por el moderador en el sitio
Funciona, pero cuando sale de un archivo y lo abre de nuevo, no funciona... no se puede guardar como .xls solo como .xlsm. ¿Hay alguna solución para eso? Gracias
Este comentario fue minimizado por el moderador en el sitio
Hola, Marko, después de copiar y pegar el código en su libro de trabajo, cuando guarde el archivo, debe guardarlo como un libro de trabajo habilitado para macros de Excel, intente, ¡gracias!
No hay comentarios publicados aquí todavía
Ver más
Deje sus comentarios
Publicar como invitado
×
Califica esta publicación:
0   Personajes
Ubicaciones sugeridas

Seguinos

Copyright © 2009 - www.extendoffice.com. | Reservados todos los derechos. Energizado por ExtendOffice, | Mapa del Sitio
Microsoft y el logotipo de Office son marcas comerciales o marcas comerciales registradas de Microsoft Corporation en los Estados Unidos y / o en otros países.
Protegido por Sectigo SSL