分享

excel辅助列实现多条件筛选数据(仿高级筛选)

 L罗乐 2018-03-31

原始数据:

结果:根据品牌,筛选日期区间内的所有数据。



此题目,如用VBA处理将是极好的,一般这种情况,用函数来处理是比较无力的。

复杂一点的使用index small if万金油公式解决,但效率太低。

因此,使用辅助列才能使效率提升上来。


辅助列公式:

=IF(AND(A4>=Sheet2!$F$4,Sheet1!$A4<=Sheet2!$H$4,B4=Sheet2!$F$3)*1,COUNTIF(H$3:H3,'>0') 1,'')


解释:and函数满足三个条件都成立的时候,返回true。

AND(A4>=Sheet2!$F$4,Sheet1!$A4<=Sheet2!$H$4,B4=Sheet2!$F$3)

也就是品牌,开始日期,结束日期这三个条件都成立的话,将返回true。

而我们知道,在excel中,true有时候是等于1的。所以

AND(A4>=Sheet2!$F$4,Sheet1!$A4<=Sheet2!$H$4,B4=Sheet2!$F$3)*1

在条件都满足的情况下就返回1.这里转换成为1,是要使用1来计数(累计)。如下图:


COUNTIF(H$3:H3,'>0') 1

通过单元格错位,生成编号(计数),因为错位,所以初始值是1,countif后面需加上1.


通过辅助列(计数),就标记了符合条件数据所在的位置。知道数据所在的位置,就可以使用match来提取数据了。

数据提取公式:

=IFERROR(INDEX(Sheet1!A$4:A$21,MATCH(ROW(A1),Sheet1!$H$4:$H$21,0),),'')

结果:

这样,就完成了数据的筛选,效率也比使用数组公式要高得多。



数据文件下载:

链接: https://pan.baidu.com/s/1TNc4NkvFwKHborQEprLesw 密码: 3jjb

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多