Excel筛选公式详解

  • 发布时间:2016年5月5日 09:12
  • 作者:杨仕航
  • 分类标签: Excel
  • 阅读(13046)
  • 评论(2)

筛选本来就可以用Excel自带的功能实现。但有些人说这样不方便,每次都要筛选之后再复制出来,问这个能不能用公式实现这个功能。

答案是肯定的,当然可以用公式实现。个人建议,如果数据量比较大的时候,不建议用下面讲到的公式。因为这是一个数组公式,数据量比较大的时候,运算会慢一些。

如果你不是只为了得到公式的话,就继续看我如何讲解这个筛选公式的原理。迫不及待的话,直接看博文结尾。


数据如下,有两列数据:姓名和性别。现想筛选出性别为“男”的姓名。

首先,我们可以if简单判断,但这样得到的结果不是连续的。

为了得到连续的结果,需要间接处理一下。修改一下if判断,若性别为男,则返回当前行号,反之则返回较大的行号。

为什么不符合条件就返回一个较大的行号呢,这个后面会解释。而且4^8是65536,2003格式的最大行号。得到这些行号之后,需要按照由小到大的顺序排列一下。这个可以用small函数,这个函数可以取第几小的值。

排列好顺序之后,就可以用index索引函数,根据行号取值。

到了这一步,可以发现符合条件的连续起来了。但出现了0,这个是取到空白的地方返回0。所以还需要优化处理一下,在index函数后面加上&""容错处理。

这样就得到我们想要的结果。到了这里大家应该明白为什么不符合条件就写一个较大的行号。这个较大的行号可以返回空白值。

写了5个公式有点多。可以合并为一个公式。这个公式是一个数组公式(数组公式需要按 Ctrl + Shift + Enter结束公式输入,而不是手动输入大括号)。

=INDEX(A:A,SMALL(IF(B$2:B$11=D$2,ROW(B$2:B$11),4^8),ROW(A1)))&""

经过前面的思路讲解,现在看这个数组公式就容易看懂了。if判断是否符合条件,符合的话返回当前行号,不符合就返回一个较大的值。再用small排列一下,用index函数取值。

上一篇:我的网站搭建(第17天) 评论库添加回复功能

下一篇:以图搜图(二):Python实现pHash算法

相关专题: Excel公式学习   

评论列表

杨仕航

杨仕航

还是建议能用系统自带的筛选就用系统自带的筛选

2016-05-12 11:07 回复

  • 杨仕航

    回复功能测试(请忽略)

    2016-05-12 11:07 回复

新的评论

清空