两份 Excel 列名不一样、行顺序打乱,如何按商品编号对账
昨天导出的表写“商品编码、库存”,今天的系统改叫“SKU、可用库存”,行也重新排序了。逐行相减会把不同行的商品放在一起。正确顺序是:先确定同一条业务记录,再对应字段,最后比较值。
本文只用虚构库存数据。你可以完全在本地用 Excel 操作,也可以用浏览器里的 SheetReconcile;不需要联系开发者、登录或提交反馈。
先看一份可核对的例子
旧表商品编码/库存:A001=30、A002=50、A003=15、A005=9。新表SKU/可用库存按乱序排列:A003=15、A001=26、A004=10、A005=9。
| 编号 | 旧库存 | 新库存 | 结果 |
|---|---|---|---|
| A001 | 30 | 26 | 修改 |
| A002 | 50 | 不存在 | 删除 |
| A003 | 15 | 15 | 未变化 |
| A004 | 不存在 | 10 | 新增 |
| A005 | 9 | 9 | 未变化 |
应得到新增1、删除1、修改1、未变化2。只比较库存这一个字段时,CSV报告有3行变更明细,不含表头。报告不列未变化记录;如果新增记录映射了多个字段,一条记录会展开多行。
按编号对账的五个步骤
- 选择两张表并看预览。 打开工具首页,先试“先看示例”,或分别选择旧表与新表。CSV默认UTF-8;旧中文编码选择GB18030。XLSX有多个工作表时先选对sheet。表头在第一行。
- 选择唯一编号。 旧表选“商品编码”,新表选“SKU”。界面的“主键”就是识别同一条记录的编号。不要选库存数或商品名称。若不同仓库可以有同一SKU,可按相同顺序选择“仓库+SKU”两列;如果同一编号在一张表出现两次,先确定业务规则,工具不会取第一条或擅自合并。
- 映射需要比较的字段。 将旧表“库存”对应新表“可用库存”。同名字段有建议,异名字段需要选择;不需要的选“不比较此字段”。编号本身不作为对比字段,至少配对一个其他字段。
- 开始对账并复核。 看四类记录数,筛选修改,搜索A001,确认30变成26。行顺序不参与匹配。空值、空白和0分别展示,大小写、首尾空格与前导零按原文比较。
- 下载报告。 点击“下载 diff-report.csv”。即使页面筛选了某种状态,下载仍含全部变化。报告列为状态、主键、旧表字段、新表字段、旧值、新值。完成后可“清除文件和数据”。
不用网页,也可用 Excel 公式
在支持XLOOKUP的Excel中,先把两张表的编号列设为文本、确认每表编号唯一;两张表的表头不必相同,公式引用实际列即可。假设旧表和新表都在A列放编号、B列放库存,旧表第2行可用:
=IF(ISNA(XMATCH(A2,新表!A:A,0)),"删除",IF(B2=XLOOKUP(A2,新表!A:A,新表!B:B),"未变化","修改"))
再在新表第2行检查新增:
=IF(ISNA(XMATCH(A2,旧表!A:A,0)),"新增","")
以上仅适合这一简单例子的存在性与库存判断,区域设置可能使用分号分隔参数。Excel的文本/数字、空白和大小写比较行为与本工具的严格字符规则可能不同;公式不能直接替代所有严格对账。旧Excel可用精确匹配VLOOKUP配合错误处理,Power Query也可按编号合并后展开值,但都应先检查重复键与字段类型。复合编号不要随意用分隔符拼接,以免产生相同字符串。
什么时候不适合使用
- 每文件超过5 MiB、10,000数据行或100列时,工具整体拒绝,不截取部分数据;XLSX解压内容另有40 MiB上限。
- 不执行公式、不支持宏和加密工作簿,也不保留格式或展开合并单元格。含公式的选中工作表需先复制、粘贴为值。只支持.csv和.xlsx。
- Excel把00123存成数值123后,工具无法恢复原编号;数值显示格式不还原。日期读取为UTC ISO文本,跨CSV比较前需统一原文件表示。
- 导出有UTF-8 BOM;公式样式文本会增加单引号以防执行。Excel直接打开CSV仍可能推断编号类型,建议用“从文本/CSV导入”并把编号列指定为文本。
隐私与反馈
文件字节、文件名、表头、编号、单元格和搜索词都留在当前浏览器内存,不上传、不交给AI、不写入浏览器持久存储。本版本没有访问分析、业务埋点或会话回放。清空/刷新页面丢弃当前数据,不会删除你已下载的报告。结果区的匿名反馈只生成可复制文字,没有自动提交渠道,也不代表已经收集反馈。