下拉列表的功能都非常实用,轻轻一点,选择一下,就完成了输入,但是遇到下面这种情况,怎么办,一个一个去找吗? 像上图这种情况,还不如自己手工输入。那么这种效果如何? 你只需要输入简单的几个字,就可以把范围大幅缩小。方便多了。 下面我们看如何制作。 1、 将数据源的右边放置一个辅助列,辅助列的作用就是让我们在任一单元格输入文字,将回筛选出包含的内容。在G1单元格输入公式:=INDEX(A:A,SMALL(IF(ISNUMBER(SEARCH(CELL('contents'),$A$1:$A$180)),ROW($1:$180),4^8),ROW(A1)))&'' 注意:三键结束(ctrl+shift+回车),把公式往下拉。 现在我们试验一下,随便找一个单元格,输入内容,我们的辅助列是不是在变化,这就是根据你输入的内容进行了筛选。 公式解读:SEARCH(CELL('contents'),$A$1:$A$180),在A1:A180单元格里面查找当前单元格的内容,并返回你要查找内容的位置。 IF(ISNUMBER(SEARCH(CELL('contents'),$A$1:$A$180)),ROW($1:$180),4^8),使用if函数,将查找到的内容返回对应的ROW($1:$180)序号,如果没查找到内容,就反回4^8。这样的结果会形成一个数据,凡是符合你输入的条件的,就是规则的序号,不符合条件的,就显示4^8。 SMALL(IF(ISNUMBER(SEARCH(CELL('contents'),$A$1:$A$180)),ROW($1:$180),4^8),ROW(A1)),利用SMALL函数,求出第一个最小值,其实这个最小值就是符合你条件的数据源位置。 最后,用INDEX函数根据位置引出内容。 我们将这个公式往下拉。 即然在任一地方输入数字都可以实现筛选,那我们只需要把这个筛选的内容放入到下拉列表就可以了。 2、 下拉列表数据源设在你需要使用下拉列表的地方设置数据验证-序列,在数据源位置输入以下公式: OFFSET(数据!$G$1,,,COUNTA(数据!$G$1:$G$50)-COUNTBLANK(数据!$G$1:$G$50)) 注意:出错警告选项卡的小勾要去掉。 然后就可以应用了,如果你有多个单元格需要这个使用,不用重复设置,只需要设置一个,复制到其它单元格就行了。 最后想说一句,这种方法,可以实现动态筛选输入,但还不太方便,如果要更方便,那就是VBA制作,下图是VBA制作的模型,制作方法,我们下回分解。 我是EXCEL共享局,关注我,每天提升工作效率。 |
|