
tengo las siguientes columnas
A | B
Name | Value
One | 1
Two | 2
Three | 3
En la columna C, quiero tener una lista desplegable de Validación que muestre la concatenación de Nombre y Valor (es decir, Uno - 1, Dos - 2, etc.). Cuando el usuario realiza una selección (es decir, Dos - 2), sólo los datos de la columna Valor llenan la celda (es decir, 2).
¿Cómo logro esta hazaña?
Respuesta1
Con datos como:
Coloque la siguiente macro de VBA en un módulo estándar y ejecútela:
Sub DV_Maker()
Dim i As Long
Dim s As String
For i = 2 To 4
s = s & "," & Cells(i, 1) & " - " & Cells(i, 2)
Next i
s = Mid(s, 2)
With Range("C2:C4").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=s
.IgnoreBlank = True
.InCellDropdown = True
.InputTitle = ""
.ErrorTitle = ""
.InputMessage = ""
.ErrorMessage = ""
.ShowInput = True
.ShowError = False
End With
End Sub
Configurará la validación de datos para las celdas.C2,C3, yC4. Luego coloque esta Macro de evento en el área de código de la hoja de trabajo:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range
Set rng = Range("S2:C4")
If Intersect(Target, rng) Is Nothing Then Exit Sub
Application.EnableEvents = False
Target.Value = Split(Target.Value, " - ")(1)
Application.EnableEvents = True
End Sub
La macro de eventos eliminará el texto de la celda después de que se hayan ingresado los datos.