做财务核对经常遇到一个问题:一张表是按月汇总的,另一张是每天一行的流水。两边用的是同一个主键(比如"月份"),但粒度不一样——月报每月一行,日流水同一个月有二三十行。想把日流水加起来看看跟月报对不对得上,传统方法是用 SUMIFS 或者做透视表。
现在 Data Diff Lab 新增了"不同粒度对账"模式,自动检测哪边粒度更细,聚合后再比对。不需要你手动写公式或者做透视表。
什么是"粒度不同"?
月报 vs 日流水:月报每月一行(收入 158,000),日流水同月有 5 行(28000 + 35000 + 42000 + 31000 + 22000 = 158,000)
订单汇总 vs SKU 明细:订单表一行(总金额 5,800),明细表按 SKU 拆 3 行(2000 + 1800 + 2000 = 5,800)
部门预算 vs 项目支出:部门级一行总额,项目级有多行拆分
共同点:主键相同(月份、订单号、部门),但一边的行数更多。
实操:月报 vs 每日流水,4 步搞定
下面用一个完整示例走一遍,示例 Excel 可以下载跟着做。
数据说明
两张表都以"月份"为关联字段。月报表(A表)每月一行,有收入、支出、订单数、退款金额四个字段。日流水表(B表)同月有多行(按日拆分),字段名相同。其中 2 月的支出故意设了差异(月报 86,800 vs 流水合计 87,300,差 500),7 月只有日流水没有月报。
| Sheet 1:财务月报(粗粒度,6行) | ||||
|---|---|---|---|---|
| 月份 | 收入 | 支出 | 订单数 | 退款金额 |
| 2025-01 | 158,000 | 95,200 | 420 | 3,200 |
| 2025-02 | 142,500 | 86,800 | 380 | 2,800 |
| … 共 6 个月(1月 ~ 6月) | ||||
86,800 和流水合计 87,300 差 500。| Sheet 2:每日流水(细粒度,27行) | |||||
|---|---|---|---|---|---|
| 月份 | 日期 | 收入 | 支出 | 订单数 | 退款金额 |
| 2025-01 | 01-03 | 28,000 | 17,000 | 75 | 500 |
| 2025-01 | 01-08 | 35,000 | 20,200 | 90 | 800 |
| 2025-01 | 01-15 | 42,000 | 26,000 | 115 | 900 |
| … 1月共 5 行,2~6月各 4 行,7月 2 行(月报无此月) | |||||
操作步骤
不同粒度对账(第三个卡片)· B(细) 收入 SUM → vs A(粗) 收入,误差 0.01
· B(细) 支出 SUM → vs A(粗) 支出,误差 0.01
· B(细) 订单数 SUM → vs A(粗) 订单数,误差 0.01
· B(细) 退款金额 SUM → vs A(粗) 退款金额,误差 0.01
预期结果
▼ 对账结果预览
| 状态 | 主键 | A(粗):收入 | B(细):收入_sum | 差值 | A(粗):支出 | B(细):支出_sum | 差值 |
|---|---|---|---|---|---|---|---|
| ✓一致 | 2025-01 | 158000 | 158000 | 0 | 95200 | 95200 | 0 |
| ≠不一致 | 2025-02 | 142500 | 142500 | 0 | 86800 | 87300 | 500 |
| ✓一致 | 2025-03 | 175000 | 175000 | 0 | 108500 | 108500 | 0 |
| ✓一致 | 2025-04 | 163000 | 163000 | 0 | 99000 | 99000 | 0 |
| ✓一致 | 2025-05 | 189500 | 189500 | 0 | 115300 | 115300 | 0 |
| ✓一致 | 2025-06 | 171000 | 171000 | 0 | 104800 | 104800 | 0 |
| 细侧独有 | 2025-07 | — | 75000 | — | 45000 |
结果显示:1月、3~6月全部一致,2 月支出差 500(月报 86,800 vs 流水聚合 87,300),7 月只在流水表有(月报缺这个月)。
和模式二"汇总 vs 明细"有什么区别?
| 对比项 | 模式二:汇总 vs 明细 | 模式三:不同粒度 |
|---|---|---|
| 用户需要做什么 | 手动指定谁是汇总、谁是明细 | 不用管,工具自动检测 |
| 上传方向 | 汇总放左边,明细放右边(有顺序要求) | 随便放,工具自己判断 |
| 配置步骤 | 分两步:先配聚合,再配对比 | 一步完成:选细侧列 + 聚合方式 + 粗侧对应列 |
| 适用场景 | 一张是汇总,一张一定是明细 | 不确定谁粗谁细,或两边都有一定重复 |
简单说:如果你明确知道谁是汇总表,用模式二;如果不想分辨或者两边都有重复行,用模式三更省事。
聚合方式怎么选?
添加对比规则时需要选择聚合方式,常用的四种:
SUM(求和):最常用。金额类字段几乎都选 SUM——日流水的收入求和后应该等于月报的收入总额。适用于:收入、支出、销售额、退款金额、数量等可累加的数值。
COUNT(计数):统计细侧有多少行。比如月报上写"1月订单数 420",你想确认日流水表里 1 月确实有 420 行记录。注意 COUNT 统计的是行数,不是某个字段的值——如果日流水表里订单数字段记录的是每天的订单数(不是每行代表一个订单),那应该用 SUM 而不是 COUNT。
MAX / MIN(最大值 / 最小值):用于校验极值。比如月报记录了"当月最高日销售额",你想确认跟流水表的 MAX 是否一致。这种场景不常见,但在质检和风控报表中偶尔用到。
其他粒度场景
除了月报 vs 日流水,这些场景也适用:
订单级 vs SKU 级:订单表一行一个订单总金额,明细表一行一个 SKU。主键选"订单号",细侧金额 SUM 后和粗侧对比。电商运营核对发货数据时经常遇到这种情况。
年度预算 vs 月度执行:年预算一行,月度执行 12 行。主键选"年份"或"部门"。财务部年终核算必做。
客户汇总 vs 交易明细:客户维度一行总消费额,交易维度有多行。主键选"客户ID"。CRM 系统导出数据常见这种格式差异。
仓库汇总 vs 出入库流水:仓库报表按 SKU 汇总库存变动,流水表每次出入库一行。主键选"SKU 编码",数量用 SUM。
常见踩坑和解决方案
主键不完全匹配
一边写"2025-01",另一边写"2025年1月"或"Jan 2025"——虽然表达的是同一个月,但文本不一致,工具会判断为"两边都找不到对方"。解决方法:上传前在 Excel 里统一主键格式。最简单的方式是用 TEXT 函数把日期统一成 YYYY-MM 格式。
数据类型不一致
A 表的金额是纯数字(158000),B 表的金额带了千分位逗号("158,000")或货币符号("¥158,000")。带格式符号的字段会被当成文本而不是数字,导致求和结果为 0 或报错。解决方法:在 Excel 里先把格式统一——选中列,右键"设置单元格格式",选"数值"。
细侧有空值行
流水表里有几行的金额是空白(不是 0)。SUM 会忽略空值,所以结果可能看起来"一致"但实际上少算了几行。如果怀疑有这种情况,可以额外加一条 COUNT 规则——如果 COUNT 的行数比预期少,说明有空行。
误差容忍度怎么设
默认误差 0.01 适合精确匹配。但有些场景需要更宽松的容忍度:金额涉及外币换算时,汇率精度可能导致小数点后几位不同,可以把误差设为 0.5 或 1;百分比字段因为四舍五入的差异,可以设 0.01(即 1%)。关键原则:误差设太大会漏掉真正的差异,设太小会产生大量"假差异"。
用 Excel 的 SUMIFS 手动做要多久?
如果不用工具,传统方法是这样的:在月报表旁边新建一列,写公式 =SUMIFS(流水表!C:C, 流水表!A:A, A2),把日流水的金额按月份求和,再跟月报的值做减法看差异。每个对比字段都要写一列 SUMIFS,4 个字段就要写 4 列。然后还要处理"细侧独有"的情况(月报没有但流水有的月份),这需要额外用 COUNTIF 检查。
一张 6 个月的小表,手动操作大概需要 15-20 分钟。但如果是一年 12 个月、10 个对比字段、上千行流水,公式复杂度和出错概率都会急剧上升。Data Diff Lab 把这些逻辑内置了——你只需要选字段和聚合方式,30 秒出结果。