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

 如何创建下拉列表但在Excel中显示不同的值?

在Excel工作表中,我们可以使用“数据验证”功能快速创建一个下拉列表,但是,您是否曾经尝试过在单击下拉列表时显示其他值? 例如,我在A列和B列中具有以下两列数据,现在,我需要使用Name列中的值创建一个下拉列表,但是,当我从创建的下拉列表中选择名称时,数字列中的值显示如下屏幕截图。 本文将介绍解决此任务的详细信息。

doc下拉菜单不同的值1

创建下拉列表,但在下拉列表单元格中显示不同的值


创建下拉列表,但在下拉列表单元格中显示不同的值

要完成此任务,请按以下步骤操作:

1。 为要在下拉列表中使用的单元格值创建一个范围名称,在本示例中,我将在 名称框,然后按 输入 键,请参见屏幕截图:

doc下拉菜单不同的值2

2。 然后选择要在其中插入下拉列表的单元格,然后单击 数据 > 数据验证 > 数据验证,请参见屏幕截图:

doc下拉菜单不同的值3

3。 在 数据验证 对话框中的 个人设置 标签,选择 清单 来自 下拉,然后单击 doc下拉菜单不同的值5 按钮选择要用作下拉列表中的值的名称列表 来源 文本框。 看截图:

doc下拉菜单不同的值4

4。 插入下拉列表后,请右键单击活动工作表标签,然后选择 查看代码 从上下文菜单中,然后在打开的 适用于应用程序的Microsoft Visual Basic 窗口,将以下代码复制并粘贴到空白模块中:

VBA代码:显示与下拉列表不同的值:

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下拉菜单不同的值6

备注:在上面的代码中,数字 5 如果Target.Column = 5然后 脚本是您的下拉列表所在的列号,“下拉”在此 selectedNum = Application.VLookup(selectedNa,ActiveSheet.Range(“ dropdown”),2,False) code是您在步骤1中创建的范围名称。您可以将其更改为所需的名称。

5。 然后保存并关闭此代码,现在,当您从下拉列表中选择一个项目时,在同一单元格中显示相对不同的值,请参见屏幕截图:

doc下拉菜单不同的值7


演示:创建下拉列表,但在Excel中显示不同的值

Kutools for Excel:具有300多个方便的Excel加载项,可以在30天内免费试用,没有任何限制。 立即下载并免费试用!

 


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部

 

按评论排序
注释 (42)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
这可以在不同的工作表上完成吗? 我的意思是,在 sheet1 上的下拉列表和在 sheet2 上的范围。 我该如何编码? 提前致谢。 蒂娜。
该评论由网站上的主持人最小化
如果我想在同一个工作表上执行多个返回不同值的下拉菜单怎么办? 你能给我看一个两个或多个编码的例子吗?
该评论由网站上的主持人最小化
李安

如果您只是将代码从 If 复制并粘贴到 EndIf 并更改列 # 和 Table 它应该可以工作:


Sub Worksheet_Change(ByVal Target As Range)
selectedNa = 目标值。
如果Target.Column = 5然后
selectedNum = Application.VLookup(selectedNa,ActiveSheet.Range(“ dropdown”),2,False)
如果不是 IsError(selectedNum) 那么
Target.Value = selectedNum
结束如果
结束如果
如果Target.Column = 9然后
selectedNum = Application.VLookup(selectedNa, ActiveSheet.Range("dropdown1"), 2, False)
如果不是 IsError(selectedNum) 那么
Target.Value = selectedNum
结束如果
结束如果
END SUB

我并不是说这是正确的方法,但它适用于我的测试版本。 我正在使用 Excel 2013
该评论由网站上的主持人最小化
刚试了一下。 它奏效了!! 谢谢你。
该评论由网站上的主持人最小化
嗨,帮助,它不起作用,你可以在这里粘贴 2 列的所有代码吗?
该评论由网站上的主持人最小化
托尼:正确,但下一步是避免鼓励:a)违反 DRY 原则(因此增加:a.1)错误的可能性和修复它们的成本以及 a.2)潜在的未来更改/增强的成本)不鼓励“复制粘贴”编程,展示如何“重构”以减少重复代码,以及 b)通过声明和使用命名常量来硬编码文字(“魔术”“数字”/“字符串”)常量在不触发编译器错误的情况下更难输入错误。 两个复制粘贴的代码块之间唯一不同的是列 #s 和范围名称,因此,其他所有内容都不应重复,因此代码应为:

' -- 注意:在全局声明模块中声明“EmptyString”。
Public Const EmptyString as String = ""

' - 列。 注意:在实践中,例如“Col5Header”将是例如“ProductID”,而“Col9Header”将是例如“SalesID”。
私人常量 Col5HeaderColumnNumber 作为整数 = 5
私人常量 Col9HeaderColumnNumber 作为整数 = 9

' -- 列的下拉列表的范围名称
私人常量 Col5HeaderDropDownRangeName as String = "col5HeaderDropDownRangeName"
私人常量 Col9HeaderDropDownRangeName as String = "col9HeaderDropDownRangeName"

子工作表_更改_
(_
ByVal 目标作为范围 _
)

' -- BEGIN 对于适用的 = 列,拉入从下拉列表中选择的描述的 ID。
将 dropDownListRangeName 变暗为字符串
dropDownListRangeName = EmptyString
选择案例目标.列
案例 Col5HeaderColumnNumber
dropDownListRangeName = Col5HeaderDropDownRangeName
案例 Col9HeaderColumnNumber
dropDownListRangeName = Col9HeaderDropDownRangeName
结束选择'-案例目标.列
If (dropDownListRangeName <> EmptyString) 那么
将 selectedId 调暗为字符串
selectedId = Application.VLookup(selectedNa, ActiveSheet.Range(dropDownListRangeName), 2, False)
如果不是 IsError(selectedId) 那么
Target.Value = selectedId
End If ' -- Not IsError(selectedId)
End If ' -- (dropDownListRangeName <> EmptyString)
-- END 对于适用的 = 列,为从下拉列表中选择的描述拉入 ID。

END SUB
该评论由网站上的主持人最小化
没有什么比输入一个详细的问题却被吹走更令人沮丧的了。 如果您输入错误的 6 位数代码来验证您的人,它会清除已发布的消息。 可能想解决这个问题。 现在我的评论是这样的:我试着做你在视频和书面说明中展示的完全相同的事情,我得到的只是当我在列表中选择一个名字时,是名字而不是数字。 此外,这甚至是如何工作的,因为数据验证应该将选择限制为仅列表中的内容。 这是如何欺骗系统的? 过去我总是必须将 vba 代码分配给按钮或快捷方式,这个代码是如何激活的? 您如何测试以确保其正常工作?
该评论由网站上的主持人最小化
当您想在工作簿的单独工作表上添加数据时,公式如何工作? 我想隐藏数据。
该评论由网站上的主持人最小化
在这里换兄弟!
selectedNum = Application.VLookup(selectedNa, Worksheets("YourSheetName").Range("dropdown"), 2, False)
该评论由网站上的主持人最小化
“YourSheetName”引用包含数据范围的工作表或我要使用 dropdwon 列表的工作表?
该评论由网站上的主持人最小化
当您想在工作簿的单独工作表/选项卡上列出数据时,公式如何工作?
该评论由网站上的主持人最小化
这在当前版本的 excel-outdated 中不起作用。 数据验证然后列表不再显示在 vba 中,因为 excel 对象已经尝试了多次并且没有显示。
该评论由网站上的主持人最小化
在此示例中,如果您希望它查看每个单元格中的值 5,但将相邻单元格中的值放入 6
该评论由网站上的主持人最小化
如果我想根据所选值在 E1 中创建指向下拉列表源的引用/链接,代码需要如何更改?
好处是如果下拉源发生更改(例如“Henrik”=>“Hendrik”,更改将自动反映在 E1 中。
该评论由网站上的主持人最小化
任何人都知道如何让它在谷歌表格中工作?
该评论由网站上的主持人最小化
我想从下拉列表中选择多个选项。
结果如下:AA1001,BB1002
可能吗?
该评论由网站上的主持人最小化
您找到解决方案了吗?
该评论由网站上的主持人最小化
Si los datos de la lista están en otra hoja, cuál sería el código? 格拉西亚斯。
该评论由网站上的主持人最小化
cómo buscar un valor hacia la izquierda
该评论由网站上的主持人最小化
私人子Worksheet_Change(按目标的ByVal目标)
selectedNa = 目标值。
如果Target.Column = 5然后

Sheets("Nombre de la hoja en donde esta la lista").Activate
selectedNum = Application.VLookup(selectedNa,ActiveSheet.Range(“ dropdown”),2,False)
床单(“Nombre de la hoja en donde estas trabajando”)。激活
如果不是 IsError(selectedNum) 那么
Target.Value = selectedNum
结束如果
结束如果
END SUB
该评论由网站上的主持人最小化
有人知道如何从右到左搜索值
该评论由网站上的主持人最小化
我需要在多个列中使用相同的下拉列表,代码是什么?
该评论由网站上的主持人最小化
嗨!
这真的很有用! 谢谢!
我在单元格不自动更新或使用刷新功能的情况下运行。 我必须单击另一个单元格,然后单击工作中的单元格以使其显示值。
我目前正在使用 Office Standard 2019。有人知道这个问题是否与我正在使用的 excel 版本有关吗?
该评论由网站上的主持人最小化
嗨,
如果我们定义列表并在同一张表中创建下拉列表,则代码工作正常。
但是我们如何才能在一张表中定义值和代码列表以及在另一张表中创建下拉列表呢?
同样的代码不起作用,因为它在这一行中显示和错误(“selectedNum = Application.VLookup(selectedNa, ActiveSheet.Range("dropdown"), 2, False)")。
另外,我有一个要求,例如,如果我在一张表中定义了多个列表,其中包含 ID 和名称,并且在另一张表中定义了多个下拉列表,其中一个下拉值取决于另一个下拉列表中的选定值。

希望你理解我的询问。

请帮我解决这个问题。
该评论由网站上的主持人最小化
这对我帮助很大,谢谢。 由于我的表格与列表框位于不同的工作表上,因此我添加了几行代码来完成此操作并防止屏幕闪烁。

Application.ScreenUpdating = False
表格(“SheetWithTableOnIt”)。激活

表格(“SheetWithDropDownListOnIt”)。激活
Application.ScreenUpdating =真
该评论由网站上的主持人最小化
您到底在哪里添加了这些代码?
该评论由网站上的主持人最小化
当我尝试使用代码时,出现编译错误:“If Trarget.Column = 6 Then”行出现语法错误? 知道为什么吗?
该评论由网站上的主持人最小化
它正在工作,但是当您退出文件并再次打开时,它无法正常工作......它不能保存为 .xls ,因为 .xlsm 有什么解决方案吗? 谢谢
该评论由网站上的主持人最小化
您好,Marko,将代码复制并粘贴到您的工作簿中后,当您保存文件时,应将其保存为 Excel 启用宏的工作簿格式,请尝试,谢谢!
这里还没有评论
了解更多

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护