【Excel技巧】可搜索的下拉菜单,你见过吗?2步搞定,不要太简单!
大家好,我是继续挖掘 Excel 各种技巧的小爽~
在工作中,我们经常需要在 Excel 中填写一些固定选项的数据。
对于「懂点 Excel」的小伙伴来说,一般会选择用【数据验证】的功能制作下拉列表。
不过一旦数据选项过多,用下拉列表选择还是会显得比较麻烦,手还很累。
这个时候,我们就急需用到搜索式的下拉列表,就像下图这样,用关键字进行搜索:
之前我们有写过一篇文章是用传统做法做的搜索式下拉列表,不过那时吓怕了一堆人。
今天,我们就来介绍一下,用 Filter 函数如何去解决这类问题~
PS:Filter 函数需要 Office 365 版本。
传统方法需要 N 步,对吧?用 Filter 函数,我们只需要两步,一起来看看吧!
这里我们来看一个案例,需要搜索有关「广东」的所有数据。
只要在 E3 单元格中输入公式:
我们可以尝试在 C3 单元格中输入其他的省份。输入搜索内容,对应的列表就一下子出来了~
公式看起来好复杂啊,不怕!接下来我们就来一步步拆解它。
公式:
公式解析:
在看函数公式前,我们先来看看公式涉及函数的基本语法~
Find 函数基本语法:
Find 函数是用来返回一个字符串在另一个字符串中出现的起始位置(区分大小写);若找不到则返回错误值。
Isnumber 函数是用来判断:引用的参数或指定单元格中的值是否为数字。是的话返回 True,否则返回 False。
Filter 函数基本语法:
Filter 函数是一个筛选函数,可以将数组中条件为 True 的结果筛选出来。
-
=FILTER(array,include,[if_empty]) =FILTER(筛选区域,筛选条件,[是否忽略空值])
公式套路:
PS:由于 Filter 函数不支持使用通配符,所以我们用 Find 和 Isnumber 函数来弥补这一特点。
❶ 我们先用 Find 函数去查找搜索区域中有关 Excel 的位置,如果没有找到返回错误值;
❷ 接着用 Isnumber 函数判断是否是数值,是的话(也就是找得到)返回 True,否的话(也就是错误值)返回 False;
❸ 最后利用 Filter 函数将筛选条件为 True 的筛选区域返回过来。
具体操作:
❶ 选中 C3 单元格,选择【数据】选项卡-点击「数据验证」;
❷ 弹出数据验证对话框,「允许」选择序列;「来源」选择:$E$3#;
❸ 出错警告:取消勾选「输入无效数据时显示出错警告」,点击【确定】。
动图如下:
❶ 在数据验证,序列来源中,$E$3 单元格中后面为什么要加个#号,它是用来干嘛的?
❷ 为什么出错警告中,要取消勾选「输入无效数据时显示出错警告」?
A:#符号称为溢出的范围运算符,它是引用整个数组范围的表示方式。
如下图,我们直接等于索引整个区域,单元格中自动会变成 E3#。
$E$3#可以自动扩选该单元格的数组区域,所以我们可以直接用在数据验证中的序列中。
A:由于我们输入的数据跟序列中不一样,所以为了防止出现错误提醒,所以需要取消勾选。
前面我们只是针对一个单元格进行搜索式查找,那如果是对于不同单元格呢,我们还需要一个个进行设置嘛?
其实这个时候,我们只需要把原本搜索的单元格,改成 Cell("contents")就可以!
Cell 函数可以用来返回有关单元格的格式、位置或内容的信息。
所以不难理解,Cell("contents")这一部分的作用,就是把当前输入的单元格直接作为 Find 函数的搜索值,也就是第一参数。
最终,我们在 E3 单元格输入如下公式:
效果如下:
本文介绍了用 Filter 函数制作搜索式下拉列表的做法:
❶ 通过 Filter,Isnumber 和 Find 函数进行模糊搜索;
❷ #符号是溢出的范围运算符,单元格#可以自动扩选数组区域;
❸ Cell("contents")可以获取当前单元格的内容。
|