1
场景背景
业务表和人名表应该一一对应,实际总有对不上的。校验思路:用 MATCH 或 COUNTIF 判断某个值在另一张表里是否存在,不存在就标出来。更严谨的是双向校验:A 有 B 没有、B 有 A 没有,两边都要查。
2
数据结构
共 2 个 Sheet3
解决步骤
1
第 1 步:用 COUNTIF 判断是否存在
最简单:在档案表里数一下这个客户出现几次,0 就是不存在。
=IF(COUNTIF(客户档案!A:A,A2)>0,"已建档","未建档")
2
第 2 步:用 MATCH 判断
MATCH 找不到会返回 #N/A,用 ISNA 转成 TRUE/FALSE。
=IF(ISNA(MATCH(A2,客户档案!A:A,0)),"未建档","已建档")
3
第 3 步:反向校验
在档案表里也加一列,检查档案里的客户在业务表中有没有记录,找出「僵尸档案」。
=IF(COUNTIF(业务表!A:A,A2)=0,"无业务","正常")
4
第 4 步:统计不匹配数量
COUNTIF 数「未建档」的条数,作为数据质量指标。
=COUNTIF(C:C,"未建档")
4
完整公式与逐段拆解
=IF(COUNTIF(客户档案!A:A,A2)>0,"已建档","未建档")
COUNTIF(客户档案!A:A,A2)在档案表整列里数这个客户出现几次>0大于 0 说明存在"未建档"等于 0 说明档案里没有,需要补录| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | 订单号 | A金额 | B金额 | 差额 | 状态 |
| 2 | SO-001 | 225.00 | 225.00 | 0.00 | 一致 |
| 3 | SO-002 | 1,798.00 | 1,898.00 | -100.00 | 金额不符 |
| 4 | SO-003 | 175.00 | 175.00 | 0.00 | 一致 |
| 5 | SO-004 | 795.00 | 无此单 | — | B表缺失 |
| 6 | SO-005 | 675.00 | 无此单 | — | B表缺失 |
| 7 | SO-006 | 0.00 | 240.00 | -240.00 | 金额不符 |
当前表:差异表 · 公式单元格 E2 · 绿色底为公式,蓝色底为动态数组溢出结果
差异表 E 列就是用 IF 判断出的对账状态
6
数据流向
数据流向演示1 / 4
来源业务表!A2
➜
去向COUNTIF
业务表的客户名
来源客户档案!A:A
→
去向匹配次数
去档案表整列查找
来源匹配次数
→
去向IF
次数为 0 → 未建档
来源IF
→
去向业务表!C2
输出校验结果
跟着高亮一步步看数据怎么流动
7
注意事项与坑
!只做单向校验会漏掉「档案里有但业务没有」的情况。
!数据量上万时 COUNTIF 整列会变慢,改用精确区域。
!文本前后空格是最常见的「假不匹配」,先 TRIM。
8