咔片PPT · AI自动生成演示文稿,模板丰富、排版精美 讯飞智文 · 一键生成PPT和Word,高效应对学习与办公

近来在网上看到一则查找两列数据差异项的方法,试着做发现07版的excel根本就没有那个功能,而且设置过程也很麻烦,有那个功夫,不如去网上找函数公式解决。今天给大家分享一下用函数组合公式和自定义函数公式两种方法实现两列数据差异查找并列出的效果。

案例

上图中各部门收集的客户名单存在不同,需要找到产品有而运营没有的客户名单,有人可能会直接选中两列数据设置条件格式,突出显示唯一值,得到下面的情况,在逐个复制过去就行了。

确实很简单,但是模拟的数据有限,要是成百上千条数据查找,查找出来后的复制粘贴工作是很烦的。通常我们会设置函数公式处理这种问题。

解决方案

通过设置excel函数数组公式和vba编辑自定义函数两种方法均可一次性找到差异值,并自动写入到要求的地方。

两种方法公式和实现效果如下图:

1、常规组合数组公式:

=IFERROR(INDEX($B$3:$B$13,SMALL(IF(ISNUMBER(MATCH($B$3:$B$13,$A$3:$A$11,)),4^9,ROW($B$3:$B$13)-2),ROW(A1))),"")

输入完成后ctrl+shift+enter三键同时按生效。

这个公式有点复杂,需要一定的函数功底才能掌握,当要比对其他列数据时,复制粘贴公式后,要修改对应的选择单元格区域有4处,即要修改4次才能正确显示结果,会用的人不多。对不想在函数上费精力的人来说可以用下面的自定义函数。

2、自定义函数,具体公式为:

=czbt($B$3:$B$13,$A$3:$A$11,ROW(A1))

这个函数比较简单,函数名为"查找不同"的拼音首字符组合,比较好记。共三个参数,第一个参数$B$3:$B$13为目标单元格区域(案例为产品客户名单),第二个参数$A$3:$A$11为对比单元格区域(案例为运营客户名单),第三个参数为row(a1)代表查找出来的第一个差异项,随着公式往下填充,一次找出第2、3...个差异项。当对比其他列数据时,复制粘贴公式后,只需修改对应的目标单元格区域和对比单元格区域各一次即可。函数参数设置简单明了,容易掌握。

自定义函数的用法还是提前插入模块,打开VBA编辑框,文件-导入文件-查找差异项.bas。或者在VBA编辑框插入模块,在代码区域粘贴下面的代码即可。

Function czbt(r1 As Range, r2 As Range, k As Integer) As String Dim arr1, arr2, arr3() arr1 = r1 arr2 = r2 ReDim arr3(1 To Application.Max(UBound(arr1), UBound(arr2))) n = 0 For i = 1 To UBound(arr1) For j = 1 To UBound(arr2) If arr1(i, 1) = arr2(j, 1) Then Exit For End If If j = UBound(arr2) Then n = n + 1 arr3(n) = arr1(i, 1) End If Next Next If k <= UBound(arr3) Then czbt = arr3(k) Else czbt = "" End If