北屋教程网

专注编程知识分享,从入门到精通的编程学习平台

FILTER函数+COUNTIF函数的组合才是核对表格的YYDS

大家好,今天我们要解决的问题是如何利用FILTER函数和COUNTIF函数来核对两列的数据,如下图所示,我们要查找出A列和D列都有的姓名:

在目标单元格中输入公式:=FILTER(A1:A13,COUNTIF(D1:D12,A1:A13)>0)

回车确定之后就可以得到两列都有的相同的姓名:

那么这个公式的原理是什么呢?

我们来逐步解析:

1-外部套入了一个FILTER函数,FILTER函数的语法为:FILTER(数据源,条件)

第一参数 A1:A13 这是要被过滤的原始数据区域

第二参数 COUNTIF(D1:D12,A1:A13)>0 这是嵌套了一个COUNTIF函数来作为判断条件

2-COUNTIF(D1:D12,A1:A13) 公式的这一部分会统计A1:A13中的每个单元格在D1:D12这个区域范围内出现的次数,

如上图所示,COUNTIF函数会将A列中的每一项依次作为查找值,统计A列范围内每个单元格中的元素在D列范围内出现的次数,得到了一个与A列等行的结果数组。

3-将上一步得到的计数结果与数字0作比较,COUNTIF(D1:D12,A1:A13)>0 就会生成一组布尔值(TRUE/FALSE)

如果某个数>0,表示该元素确实存在于D列中,说明A列和D列同时存在该元素。则就返回TRUE

如果某个数<0,表示该元素不存在于D列中,说明该元素不是两列的共同元素。则就返回FALSE

再次返回到FILTER函数中:COUNTIF函数返回的一组布尔值,恰好作为FILTER函数的第二参数,当结果为TRUE时,对应的行就会被留下来。此时就把AD两列相同的元素给提取出来了。

A列和D列都有的给筛选出来了,接着筛选A列有D列没有的。

在目标单元格中输入公式:=FILTER(A1:A13,COUNTIF(D1:D12,A1:A13)=0) 确定回车之后:

便可以得到A列有而D列没有的,这个公式跟上面的公式基本逻辑是一样的,主要的区别在于对COUNTIF函数的判断。

对COUNTIF函数进行求值:

在得到的结果数组中,0表示的是A列中该单元格的元素在D列中没有找到,恰好就是我们需要的数据,此时用COUNTIF(D1:D12,A1:A13)=0来作为判断,将次数为0的单元格转为逻辑值TRUE,此时FILTER函数就可以将逻辑值为TRUE的单元格给提取出来了。

接着再来筛选D列有的而A列没有的。这次的公式就要稍微做点变化了,因为这次是要筛选D列有的,所以D列这次就要作为FILTER函数的数据源了。

在目标单元格中输入公式:=FILTER(D1:D12,COUNTIF(A1:A13,D1:D12)=0)

这次的筛选跟上面的筛选是一个道理,就不赘述了,不同的地方在于COUNTIF函数的两个参数,因为这次是要筛选D列有的,所以就要找到D列中元素出现在A列中的次数为0的值,所以D列要作为COUNTIF函数的第二参数,其他逻辑就跟上面是一个道理了,咱们快速过一下。

对COUNTIF函数求值:

对COUNTIF函数的值进行条件判断,是否等于0:

套入在FILTER函数中进行求值:

以上三种情况其实逻辑基本是一样的,主要是在于理解,理解清楚一个就都好理解了。

好了,今天的分享到此结束了,有什么难以理解的地方,可以打在评论区一起讨论一下,如果对您有帮助的话,点个赞吧!

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言