模糊搜索数组_可搜索的下拉菜单,你见过吗?2步搞定,不要太简单!

b6626c55558eb3e3ed81ec2c9f04fdac.png 秋叶 PPT 双 12 大促 年终盛典 全场精品课享年度超值价 买课赠书  最高立省 801 本文作者:小爽 本文审核:玛奇鹅 本文编辑:竺兰 大家好,我是继续挖掘 Excel 各种技巧的小爽~ 在工作中,我们经常需要在 Excel 中填写一些固定选项的数据。 对于「懂点 Excel」的小伙伴来说,一般会选择用【数据验证】的功能制作下拉列表。 不过一旦数据选项过多,用下拉列表选择还是会显得比较麻烦,手还很累。 这个时候,我们就急需用到 搜索式的下拉列表, 就像下图这样,用关键字进行搜索: 94d77d83e82ea5045eb7660d4a006a9a.gif 之前我们有写过一篇文章是用传统做法做的搜索式下拉列表,不过那时吓怕了一堆人 (文章见文末~)。 呐,你看~ 0ef7b3f839355b9d9b6377b55a8effd5.png 今天,我们就来介绍一下,用 Filter 函数如何去解决这类问题~ PS:Filter 函数需要 Office 365 版本。 传统方法需要 N 步,对吧?用 Filter 函数,我们只需要两步,一起来看看吧! bafff63571e348084909c4a9f29cb9da.png

创建搜索数据对应的列表

这里我们来看一个案例,需要搜索有关「广东」的所有数据。 只要在 E3 单元格中输入公式:
=FILTER($A$2:$A$401,ISNUMBER(FIND(C3,$A$2:$A$401)))
▲ 左右滑动查看 呐,关于「广东」的数据,一下子就出来啦~ c4afddd4d32c971c0267e7e62652ac70.png 我们可以尝试在 C3 单元格中输入其他的省份。 输入搜索内容,对应的列表就一下子出来了~ 545159816cf7ca8f3b08e5e1d3171359.gif b912e0b5c465294f21996c7e2d6ca4e8.png 公式看起来好复杂啊,不怕!接下来我们就来一步步拆解它。 (着急看下一步的同学,也可以直接滑到 02。) 公式:
=FILTER($A$2:$A$401,ISNUMBER(FIND(C3,$A$2:$A$401)))
▲ 左右滑动查看 21d7bf42b6ff2b93d6e3afae4cead602.png  公式解析: 在看函数公式前,我们先来看看公式涉及函数的基本语法~ 21d7bf42b6ff2b93d6e3afae4cead602.png Find 函数基本语法: Find 函数是用来返回一个字符串在另一个字符串中出现的起始位置 (区分大小写) ; 若找不到则返回错误值。
=FIND(find_text,within_text,[start_num])=FIND(查找值,在哪里找,[从第几个字符开始查找])
▲ 左右滑动查看 Isnumber 函数是用来判断:引用的参数或指定单元格中的值是否为数字。是的话返回 True,否则返回 False。 21d7bf42b6ff2b93d6e3afae4cead602.png Filter 函数基本语法: Filter 函数是一个筛选函数,可以将数组中条件为 True 的结果筛选出来。
=FILTER(array,include,[if_empty])=FILTER(筛选区域,筛选条件,[是否忽略空值])
▲ 左右滑动查看 21d7bf42b6ff2b93d6e3afae4cead602.png 公式套路:
=FILTER(搜索区域,ISNUMBER(FIND(搜索内容,搜索区域)))
▲ 左右滑动查看 PS:由于 Filter 函数不支持使用通配符,所以我们用 Find 和 Isnumber 函数来弥补这一特点。 比如说,我们要搜索 Excel 对应的数据。 ❶ 我们先用 Find 函数去查找搜索区域中有关 Excel 的位置,如果没有找到返回错误值; ❷ 接着用 Isnumber 函数判断是否是数值,是的话 (也就是找得到) 返回 True,否的话 (也就是错误值) 返回 False; ❸ 最后利用 Filter 函数将筛选条件为 True 的筛选区域返回过来。 417a0d98524860f479f1e9c99b26c260.png 回到案例,我们直接套用公式,就可以搞定!
=FILTER($A$2:$A$401,ISNUMBER(FIND(C3,$A$2:$A$401)))
▲ 左右滑动查看
566e68b76068f08695cd12d31addb74e.png

设置数据验证

搜索列表已经出来了,下一步就是要设置数据验证啦~ 21d7bf42b6ff2b93d6e3afae4cead602.png 具体操作: ❶ 选中 C3 单元格,选择【数据】选项卡-点击「数据验证」; 62f0cf075280d92545f66479c8cb337d.png ❷ 弹出数据验证对话框,「允许」选择序列;「来源」选择:$E$3#; 598105ed7be64cbb073b182dc91ed1e6.png ❸ 出错警告:取消勾选「输入无效数据时显示出错警告」,点击【确定】。 3cea48caa988a813c8fdb5ca4f7500b8.png 21d7bf42b6ff2b93d6e3afae4cead602.png 动图如下: b4d848dff822bded5332d6bb320edd99.gif 最后的效果~ d7bc19f049715594077769c44d3bffdf.gif 看到这里或许有小伙伴疑惑了。 ❶ 在数据验证,序列来源中,$E$3 单元格中后面为什么要加个#号,它是用来干嘛的? ❷ 为什么出错警告中,要取消勾选「输入无效数据时显示出错警告」? 434ba6447fa9533dd915d4df522a2f54.png 下面我们就来一一解答~ Q1:$E$3 中后面的#是干什么的? A: #符号称为溢出的范围运算符,它是引用整个数组范围的表示方式。 如下图,我们直接等于索引整个区域,单元格中自动会变成 E3#。 d3fc08068a7332aeebcf1e2c208ea020.gif $E$3#可以自动扩选该单元格的数组区域,所以我们可以直接用在数据验证中的序列中。 59140205d9cb1efe3e414367ea8c1e79.png Q2:取消勾选【输入无效数据时显示出错警告】。 A: 由于我们输入的数据跟序列中不一样,所以为了防止出现错误提醒,所以需要取消勾选。 e372d32812427ffb2db8b3a33a74a8ba.png 5bb26b3c8a05e987fe04b62cdc5fda76.png abf8727ca5044cb854664a5f766b82e6.png 不同单元格搜索式查找 前面我们只是针对一个单元格进行搜索式查找,那如果是对于不同单元格呢,我们还需要一个个进行设置嘛? 其实这个时候,我们只需要把原本搜索的单元格,改成 Cell("contents")就可以! Cell 函数可以用来返回有关单元格的格式、位置或内容的信息。 所以不难理解,Cell("contents")这一部分的作用,就是把当前输入的单元格直接作为 Find 函数的搜索值,也就是第一参数。 最终,我们在 E3 单元格输入如下公式:
=FILTER($A$2:$A$401,ISNUMBER(FIND(CELL("contents"),$A$2:$A$401)))
▲ 左右滑动查看 21d7bf42b6ff2b93d6e3afae4cead602.png 效果如下: 4aa6c134cc4023d7f1eb7be4188c4958.gif d9ba703a59333319d451d7b2698cb6d8.png 总结一下 本文介绍了用 Filter 函数制作搜索式下拉列表的做法: ❶ 通过 Filter,Isnumber 和 Find 函数进行模糊搜索; ❷ #符号是溢出的范围运算符,单元格#可以自动扩选数组区域; ❸ Cell("contents")可以获取当前单元格的内容。 更多 Filter 函数的用法,可以戳:

错过XLOOKUP?想早下班,千万别再错过这个万能查询函数!

传统模糊下拉列表做法,可以戳:

Excel里超好用的“搜索式”下拉菜单,很多人都不知道!

文中的技巧还可以用在哪些地方?大家还想要知道哪些 Excel 小妙招? 欢迎在后台与我留言,我们继续来聊个两毛钱的~也欢迎动动手点点赞~ c8a4f80401c1860c10282bedb3f4633c.png
最后,为了帮助职场的 Excel 困难户提升工作效率,用数据分析技能、图表思维提升竞争力,咱们秋叶团队推出了 《Excel 高手养成套装》 课! 日常购买需要  635 元 ,现在正值秋叶双 12 大促,下单仅需  199  ,花一门课的钱,学 三门优质好课 ! 趁现在赶紧扫码购课学 Excel,省时省力更高效,减少熬夜下班早!↓↓↓ 5180d70f63a056bae97fef2c864122ea.png ↑↑↑现在扫码,还能免费试看 现在购课,额外赠送 价值 99 元 《年终总结福利》课、 价值 99 元 的「轻松学体验营」、专属答疑群和秋叶家鼠标垫! 1466b828fd6cf8ae2beb03dd4094d3eb.png 还等什么,赶紧扫码下单吧!ae25e25ff86eda9529743513085269c6.png 6517bec5613e32a4b78b95c4b9ba5d3b.png 61fa12f2946d4b4e3fe5d4f842e55b41.png f9837ade8b014e437936a551dfe0d96d.png 406cefa78d7f280c6bada1171d8259c6.png 57d5cac0b173d571dd2725a41dcc6241.png d3a689ff855a1b9d84dbdb944ac88760.png ↓↓↓ 7fe89ec0b7ce996c27465565b4470f50.gif 学习打卡 点亮一下~ 23d57b2f7a8494ce74ae3c5eabf9040d.png 喜欢今天的内容 就分享 给朋友吧~ 23d57b2f7a8494ce74ae3c5eabf9040d.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
你的问题比较复杂,需要分开回答。 1. uniapp 数组循环 在uniapp中,你可以使用 v-for 指令来循环一个数组,例如: ``` <template> <ul> <li v-for="(item, index) in items" :key="index">{{ item }}</li> </ul> </template> <script> export default { data() { return { items: ['apple', 'banana', 'orange'] } } } </script> ``` 2. 下拉菜单筛选 你可以使用 uni-popup 组件来实现下拉菜单,然后在该组件中添加筛选条件,例如: ``` <template> <div> <button @click="showPopup">筛选</button> <uni-popup v-model="show" :style="{height: '300rpx'}"> <ul> <li v-for="(item, index) in items" :key="index" v-show="filterItem(item)">{{ item }}</li> </ul> </uni-popup> </div> </template> <script> export default { data() { return { items: ['apple', 'banana', 'orange'], show: false, filterValue: '' } }, methods: { showPopup() { this.show = true }, filterItem(item) { return item.includes(this.filterValue) } } } </script> ``` 在上面的代码中,我们使用 uni-popup 组件来实现下拉菜单,然后在下拉菜单中循环 items 数组,使用 v-show 指令来控制每个 li 元素是否显示,filterItem 方法用于筛选符合条件的项,filterValue 是筛选条件的值。 3. hover 显示 你可以使用 CSS 的 :hover 伪类来实现 hover 显示,例如: ``` <template> <div> <ul> <li v-for="(item, index) in items" :key="index">{{ item }}</li> </ul> </div> </template> <style> li:hover { background-color: #eee; } </style> ``` 在上面的代码中,我们使用 CSS 的 :hover 伪类来实现鼠标悬停时 li 元素的背景色变化。 4. 点击选中 你可以使用 v-bind:class 指令来控制元素的 class,然后在点击时给选中的元素添加特定的 class,例如: ``` <template> <div> <ul> <li v-for="(item, index) in items" :key="index" :class="{active: index === selectedIndex}" @click="selectItem(index)">{{ item }}</li> </ul> </div> </template> <script> export default { data() { return { items: ['apple', 'banana', 'orange'], selectedIndex: -1 } }, methods: { selectItem(index) { this.selectedIndex = index } } } </script> <style> .active { background-color: #eee; } </style> ``` 在上面的代码中,我们使用 v-bind:class 指令来控制 li 元素的 class,根据 selectedIndex 的值来判断当前 li 是否被选中,selectItem 方法用于选中 li 元素。 5. 下拉菜单恢复 你可以在组件的生命周期钩子函数中重置相关的数据,例如: ``` <template> <div> <button @click="showPopup">筛选</button> <uni-popup v-model="show" :style="{height: '300rpx'}"> <ul> <li v-for="(item, index) in items" :key="index" v-show="filterItem(item)" :class="{active: index === selectedIndex}" @click="selectItem(index)">{{ item }}</li> </ul> </uni-popup> </div> </template> <script> export default { data() { return { items: ['apple', 'banana', 'orange'], show: false, filterValue: '', selectedIndex: -1 } }, methods: { showPopup() { this.show = true }, filterItem(item) { return item.includes(this.filterValue) }, selectItem(index) { this.selectedIndex = index this.show = false } }, beforeDestroy() { this.selectedIndex = -1 } } </script> <style> .active { background-color: #eee; } </style> ``` 在上面的代码中,我们在组件的 beforeDestroy 生命周期钩子函数中重置 selectedIndex 的值,确保每次重新打开下拉菜单时 selectedIndex 的值都是 -1。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值