![列表框:显示一个列表,从表中的相邻列返回项目。](https://linux22.com/image/1484670/%E5%88%97%E8%A1%A8%E6%A1%86%EF%BC%9A%E6%98%BE%E7%A4%BA%E4%B8%80%E4%B8%AA%E5%88%97%E8%A1%A8%EF%BC%8C%E4%BB%8E%E8%A1%A8%E4%B8%AD%E7%9A%84%E7%9B%B8%E9%82%BB%E5%88%97%E8%BF%94%E5%9B%9E%E9%A1%B9%E7%9B%AE%E3%80%82.png)
我们有一个电子表格,里面填写了账单信息,然后通过 FTP 上传到主机。第一列需要填写客户帐号。我想要做的是提供一个客户姓名 AZ 的下拉列表。(我有一个包含姓名和号码的两列表格)。当他们选择一个姓名时,我想在单元格中输入客户号码而不是姓名。
下拉列表:Aname Bname Cname。选择后返回单元格,并填充帐号 111111,222222,333333。我可以使用 vlookup 轻松完成此操作,但这需要额外的列。我需要从第一列中获取双重功能。
有任何想法吗?
答案1
请考虑以下屏幕截图:
当选择客户名称时,以下宏会立即用 D 列和 E 列查找表中的客户编号替换名称。下拉列表保留客户列表。在屏幕截图中,首先选择了客户 C,宏用编号替换了名称。现在下拉列表仍可用于选择其他客户。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim LookupTable As Range
Set LookupTable = ThisWorkbook.Worksheets("Sheet1").Range("D2:E100")
If Not Intersect(Target, Range("A:A")) Is Nothing Then
Application.EnableEvents = False
Target = Application.WorksheetFunction.VLookup(Target.Value, LookupTable, 2, False)
Application.EnableEvents = True
End If
End Sub
右键单击工作表标签,选择“查看代码”,然后将代码粘贴到代码窗口中。调整引用以适合您的工作簿。
请记住将文件保存为启用宏的工作簿。