参考博文:Excel输入内容自动匹配下拉菜单相似选项的两种方式

❓ 怎么理解标题呢,我先举个例子,当我们在搜索引擎(百度、谷歌)输入你想搜索内容的第一个字符时,它会自动弹出一个下拉列表,列表的每个选项都是与这个字符相似的,这时我们可以很快找到并点击其中我们想要搜索的内容,省去了我们大脑思考的时间,而我们并不需要输入完整的内容。
所以在Excel中,我们同样有这个需求,主要应用场景在于:录单员录入数据,数据校对等。接下来我将好好介绍如何操作,不用VBA和用VBA怎么实现,它们的效果如何?

不使用 VBA+辅助列

首先我们尝试不使用VBA和辅助列能不能做到,万一能实现,何必要写VBA、添加辅助列呢!

image.png

  1. 定义名称

我稍微对信息表进行处理下,这里有两列,只是方便后面多级联动采用,这里我们用第二列(不重复)就好
处理:选择B2:B17单元格区域做升序排(因为弹出的列表我们希望以升序排列),然后选择B1:B17单元格,快捷键 Ctrl+Shift+F3 定义名称,弹出窗口,只勾选首行就行,这样,一个以A1单元格值为名的名称就定义好了,可以通过【公式】→【名称管理器】查看,是一个包含多个值的数组。定义名称的好处是能够简短公式,如果这个单元格区域应用到多个地方,那么扩展选项也比较方便,不用每个地方改下引用位置。

  1. 设置数据验证

这一步是关键,为所要实现效果的单元格设置数据验证,我们在另一个sheet进行设置

  • A列第一行是标题,所以A1输入人员
  • 选择A2单元格,一次点击进入【数据】→【数据验证】,弹出如下窗口并做如下设置:

image.png

  • 来源输入公式:=OFFSET(信息表!B1,MATCH(““&A2&”“,人员,0),,COUNTIF(人员,”“&A2&”“)) ,其中人员是之前定义的名称(实际是数组),offset函数如果查找结果有多个,则返回的是一个数组,在单元格会以列表形式展现;
  • 出错警告那里取消勾选“输入无效数据时显示出错警告”,然后点击确定即可。

🎈 设置后的效果如下:

不使用 VBA,使用辅助列