最受欢迎的筛选公式,你一定要学会!

今天继续来说筛选公式,不过今天的筛选公式是比较受欢迎的,大众普遍在用的,值得你学会。
-01-
具体应用

1.根据姓名查询出所有的记录
如下图所示,只要选择一个姓名就把对应的所有记录查询出来。前几天已经说过好几种方法了,今天来说另外一种方法。
先上公式,当然这是不用辅助列的公式。在G18单元格中输入公式=IFERROR(INDEX(A:A,SMALL(IF($A$16:$A$25=$H$15,ROW($16:$25)),ROW(1:1))),""),按ctrl+shift+enter三键,右拉下拉完成。
说下这个公式的思路,用$A$16:$A$25这个区域的姓名和H15的姓名进行比较,相等的返回$A$16:$A$25这个区域对应的行号,也就是IF($A$16:$A$25=$H$15,ROW($16:$25))这部分,现在是一个数组。
然后再从多个行号中取出每个行号,由于多个行号都是唯一的,并且从上到下是从小到大的顺序,比如现在刘卓的对应的多个行号从上到下分别是17,21,23。而用small这个函数,刚好取第1个最小值17,第2个最小值21,第3个最小值23。也就是SMALL(IF($A$16:$A$25=$H$15,ROW($16:$25)),ROW(1:1))这部分。
现在每个行号都提取出来了,就用index返回整个A列中的第几行。这样就返回它的多个值。也就是INDEX(A:A,SMALL(IF($A$16:$A$25=$H$15,ROW($16:$25)),ROW(1:1)))这部分。由于A列没有锁定,右拉的时候会相对变成B列,这样就返回B列对应行号的单元格内容。
但是下拉时,随着行号的增加,会出现错误值。比如刘卓对应的行号只有17,21,23这3个。随着下拉small取第4个最小值时,会出现错误值。所以要用iferror处理下错误,最后的公式就为=IFERROR(INDEX(A:A,SMALL(IF($A$16:$A$25=$H$15,ROW($16:$25)),ROW(1:1))),"")
这个公式还有另一种写法=INDEX(A:A,SMALL(IF($A$16:$A$25=$H$15,ROW($16:$25),4^8),ROW(1:1)))&""。4^8是65536,是早期excel版本的最后一行。一般不会在最后一行放内容的,也就是空单元格,但index返回空单元格的内容为0,所以最后连接个空文本&""就显示为空白。这个公式对于日期格式的数字还需进一步处理。因为它将日期变成文本型的数字了。如下图蓝框所示。
如果你看不懂上面的公式,可以用辅助列的方法。在A2单元格输入公式=IF(B2=H$1,ROW(B2)),下拉。这样就返回姓名对应的多个行号。
然后要从多个行号中取出每个行号,用到small函数。在G4单元格中输入公式=SMALL($A$2:$A$11,ROW(1:1)),右拉下拉。得到下图的结果。
行号取到了,只需用index返回B列,C列,D列,E列的每一行。在G4单元格中输入公式=INDEX(B:B,SMALL($A$2:$A$11,ROW(1:1))),右拉下拉。得到下图的结果。由于B列没有锁定,右拉会相对变化,正好返回C列,D列,E列。
最后用iferror处理下错误值,公式为=IFERROR(INDEX(B:B,SMALL($A$2:$A$11,ROW(1:1))),""),右拉下拉完成。
还有一步将数字设置成日期格式,选中日期下的单元格,按ctrl+shift+3,完成。
最好结合原表格来看文章,原表格链接:
https://pan.baidu.com/s/102lXqhsJ85MjwAKmYfMIMA
提取码:ym56
(0)

相关推荐