【数据核对】 WPS数据核对使用FILTE + COUNTIFS提高效率

懒得批爆
懒得批爆

创作者俱乐部成员

📎

大约在半年前有个问题一直困扰着我,就是需要快速核对两列数据或两个数组的不同,并将结果输出在指定位置。


需求:

数组A数组B

要求得到三个数组

  • 数组一:数组A中有,数组B中没有

  • 数组二:数组B中有,数组A中没有

  • 数组三:数组A和数组B中共有

以前

以前的在做法都是笨办法:把数组B复制到数组A下面,使用高亮重复项挨个儿复制

这个操作,实在是效率太低。

后来又在社区某个帖子里看到可以使用透视表方法或者XLOOKUP/VLOOKUP。

数据透视表仅适合单列数据,而且效率也不高,如果这两列数据都是上千行的就没办法提高效率了

XLOOKUP/VLOOKUP也需要大量的辅助列。

今天

一直就是这么操作了大半年,直到在某个帖子中看到一个方法,可以使用FILTER嵌套其他函数来解决,顿时眼前一亮,对呀,怎么忘了用筛选数组的方式呢!

于是马上自己来试一试:

数组一:数组A中有,数组B中没有

公式:

=FILTER(B3:B56,COUNTIFS(D3:D43,B3:B56)=0)

Mac:

Windows:

原理分析:

先将COUNTIFS(D3:D43,B3:B56)分离出来看看得到什么

Mac:

Windows:

这样筛选B3:B56数据,条件为K3#=0的就能得到数组A中有,数组B中没有的要求。

数组二:数组B中有,数组A中没有

公式:

=FILTER(D3:D43,COUNTIFS(B3:B56,D3:D43)=0)

Mac:

Windows:

原理分析:

这里将COUNTIFS(B3:B56,D3:D43)也分离出来得到M3#

Mac:

Windows:

这样筛选D3:D43数据,条件为M3#=0的就能得到数组B中有,数组A中没有的要求。

数组三:数组A和数组B中共有

公式:

=FILTER(D3:D43,COUNTIFS(B3:B56,D3:D43))

Mac:

Windows:

这里分离COUNTIFS(B3:B56,D3:D43)出来得到的效果也是M3#中的数据

Mac:

Windows:

仔细观察,数组三的公式和数组二的公式几乎相同,仅仅是去掉了=0的条件,这样就能得到数组A数组B中共有的要求,同理筛选B3:B56,条件为K3#,也能得到同样的数据,只是顺序不同而已。

Mac:

Windows:

以上的公式方法经测试,在跨工作表时也能得到需要的数据,Windows和Mac的WPS中都能使用。

这样在工作的数据模板中这么设定好后,以后只需要将数据源更新后,就能得到需要的内容了。

案例文档:

📢

【数据核对】WPS数据核对使用FILTE + COUNTIFS提高效率

https://kdocs.cn/l/cqNJIWdq56Oh

案例环境:

系统

Mac

Windows

软件

Mac

Windows

2025年1月1日分享第一贴

四川省
浏览 178
2
6
分享
6 +1
5
2 +1
全部评论 5
 
BDHR-行政
学习了
· 四川省
回复
 
浮生忘语
初学函数,和楼主探讨一个问题:就是countifs()后面什么都没写的时候,是不是,函数默认“0”为假值,其他的为真值。当countifs()后面写‘=0’的时候,函数认为“0”为真值,其他的都是假值。因为我发现,在找不同的时候countifs()后面减1也可以(相当于把相同时的“1“变成了0)。只是匹配结果是对的,就是不清楚原理对不对,因为函数的这个特性可以用到其他的地方,所以想搞清楚一点,方便日后其他地方的应用。
· 河南省
回复
懒得批爆
懒得批爆

创作者俱乐部成员

是的,姑且可以这么认为在表格中,大多数时候都是这么认定的。 0就是FALSE(假值),可以试试这个公式=FALSE()+FALSE() 1就是TRUE(真值),可以试试这个公式=TRUE()+TRUE()
· 四川省
回复
 
1231393578237
学习了
· 四川省
回复
 
亂雲飛渡
学习
· 广东省
回复