Utilizando lista desplegable en excel, al seleccionar una opción de la misma, que escriba en la celda el valor adyacente

Por ejemplo, en la hoja1, tengo la celda A1 en blanco en la que quiero colocar la lista desplegable. En la hoja2, en la columna A, tengo los nombres de los empleados y en la columna B tengo su número de documento de identidad. Por ejemplo, hoja2, celda a1, tengo el nombre "JAVIER GIMENEZ" y en la celda b1 adyacente, tengo el número de documento 1619126 que le corresponde a "JAVIER GIMENEZ". En la lista desplegable, quiero que me aparezca el nombre del empleado y al hacer click en el nombre, que escriba el número de documento en lugar del nombre seleccionado.

1 respuesta

Respuesta
2

[Ho la y bienvenido a TodoExpertos.

Pon el siguiente código en los eventos de la Hoja1.

Cambia en el código "A1" por la celda donde quieres que funcione.

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rng As Range, c As Range, f As Range
  '
  Set rng = Intersect(Target, Range("A1"))
  If Not rng Is Nothing Then
    For Each c In rng
      If c.Value <> "" Then
        Application.EnableEvents = False
        Set f = Sheets("Hoja2").Range("A:A").Find(c.Value, , xlValues, xlWhole, , , False)
        If Not f Is Nothing Then
          c.Value = f.Offset(, 1).Value
        End If
        Application.EnableEvents = True
      End If
    Next
  End If
End Sub

---

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(Hoja1)
  4. En el panel del lado derecho copia la macro
  5. Regresa a la hoja de excel y prueba.

Gracias Dante ! ¿Existe alguna manera de hacerlo sin macro? Por ejemplo, ¿escribiendo una instrucción o una fórmula en el campo "origen" de la lista desplegable?

No es posible sin macro.

No puedes tener en la misma celda un valor y al mismo tiempo una fórmula.

Para eso tienes otras celdas. Te sugiero que en la celda A1 de la hoja1 pongas el nombre y en la celda B1 de la hoja1 pongas la función BuscarV para obtener el número de documento.

He probado con la macro, lastimosamente no funciona como deseo. Me dio un error, intenté corregirlo, sin éxito.

¿Qué dice el error?

¿En cuál línea de la macro se detiene?

Ayúdame con toda la información, no es suficiente con decir "no funciona"

Te comparto mi archivo de pruebas para que veas cómo debes poner el código y la lista desplegable.

https://drive.google.com/file/d/1E2QaU9Wt5hS8POA61yaXbfkhUB_36sJh/view?usp=sharing 

---

Si no puedes adaptarlo a tu archivo, entonces comparte tu archivo y te ayudo a adaptar la solución.

Aquí te paso el archivo. Al seleccionar cualquier elemento de la lista, me pone el elemento seleccionado, cuando lo que necesito es que me ponga el elemento que está adyacente el la columna 2.

https://docs.google.com/spreadsheets/d/1e644_zkplwQ1nXSNrQ0Am0Pd6Eoet1b7/edit?usp=sharing&ouid=111802155982652866292&rtpof=true&sd=true 

Tu archivo de pruebas también tuvo el mismo comportamiento. Al seleccionar un elemento de la lista, pone el elemento seleccionado y no el elemento adyacente en la columna 2

Disculpa Dante. Ya encontré el problema y lo he solucionado. Agradezco muchísimo tu ayuda !

Gracias nuevamente por la respuesta, que funcionó perfectamente. Ahora tengo otra consulta. conservando la macro, la lista desplegable y la trabla de consulta anterior, en la misma hoja de cálculo, en la celda c1, tengo otra lista desplegable, en la que quiero ver los apellidos. La tabla de consulta está en la hoja 2, tiene apellidos en columna c y números asociados a cada uno en columna d. Al igual que en la anterior lista desplegable, la intención es seleccionar el apellido y que se escriba el número asociado al mismo, que está en la celda adyacente. Al copiar y pegar la misma macro, en la misma hoja de calculo, al seleccionar el apellido me da un mensaje de error que dice "Error de compilación: Se ha detectado un nombre ambiguo: Worksheet_Change. A continuación el archivo "prueba2" para que lo puedan visualizar.

https://docs.google.com/spreadsheets/d/1e644_zkplwQ1nXSNrQ0Am0Pd6Eoet1b7/edit?usp=sharing&ouid=111802155982652866292&rtpof=true&sd=true 

Solamente puedes tener un código para el evento Change.

Te actualizo la macro para que funcione con A1 y C1:

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rng As Range, c As Range, f As Range
  '
  If Target.CountLarge > 1 Then Exit Sub
  '
  If Not Intersect(Target, Range("A1")) Is Nothing Then
    If Target.Value <> "" Then
      Application.EnableEvents = False
      Set f = Sheets("Hoja2").Range("A:A").Find(Target.Value, , xlValues, xlWhole, , , False)
      If Not f Is Nothing Then
        Target.Value = f.Offset(, 1).Value
      End If
      Application.EnableEvents = True
    End If
  End If
  '
  If Not Intersect(Target, Range("C1")) Is Nothing Then
    If Target.Value <> "" Then
      Application.EnableEvents = False
      Set f = Sheets("Hoja2").Range("C:C").Find(Target.Value, , xlValues, xlWhole, , , False)
      If Not f Is Nothing Then
        Target.Value = f.Offset(, 1).Value
      End If
      Application.EnableEvents = True
    End If
  End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas