首页 > 文章 > Excel表格 > Excel里都显示001,比对却找不到?检查前导零和单元格类型

Excel里都显示001,比对却找不到?检查前导零和单元格类型

Excel两表比对

点击使用相关工具

去使用

旧表里编号是001,新表里也显示001,为什么比对后出现一条新增和一条删除?先检查它们保存的值:一个可能是三个字符的文本,另一个只是数值1,靠数字格式显示成三位。外观看起来相同,数据身份却不相同。

Excel两表比对保留这种区别。它读取单元格的值和类型,不把自定义显示格式当作编号,也不自动把所有编号转成数字。这能避免把本来不同的代码强行合成同一条记录,但要求使用者先明确两份数据的编号口径。

用两行数据定位问题,不必检查整张大表

建立old-text.xlsx,第一行是“编号、金额”,两条数据分别为文本001与金额10、文本002与金额20。在输入编号前将编号列设为文本,确认单元格确实保存文本值。建立new-number.xlsx,同样两行数据,但第一条编号保存为数值1,金额仍为10;第二条仍为文本002,金额20。可以给数值1设置000显示格式,让它在Excel中显示为001。

两份文件都保存为标准.xlsx,工作表为Data,按旧表、新表顺序加入工具。表头行保留1,关键列选“编号”,比较列选“金额”。运行后应看到:新增1、删除1、修改0、未变1。

实际保存内容比对结果原因
旧表文本001,新表数值1删除旧记录,新增新记录关键字不同,金额相同也不会配对
两表均为文本002,金额20未变1关键字和金额都相同

这时字段差异表没有金额修改记录,并不是漏查10。两条001外观的记录没有匹配上,分别归入Added和Deleted;字段级修改只发生在关键字已经对应的记录之间。

再建立new-text.xlsx,将第一条真正保存为文本001,其余不变。重置后载入old-text.xlsx和new-text.xlsx,用同样选项重新处理,结果应变为新增0、删除0、修改0、未变2。本文用这三份合成工作簿实际核对过这两组结果。

先确定编号规则,再统一两侧数据

如果业务规定编号恰好三位,001与数值1表示同一对象,可以在原表新增一个核对列,把两侧按同一规则整理成真正的文本编号。若规则没有规定长度,原来可能是01、001或0001,剩下一个1就无法知道哪一个才是原值。此时应找回原始导出或向数据提供方核对,不能随意补到三位。

对于已经存成数值的单元格,事后改成“文本”格式并不等于找回零;000显示格式也只是改变外观。需要补位时,可在业务确认后使用TEXT等方法生成文本,再复制为值、保留原列并抽查。不要直接覆盖原始文件。微软的前导零和大数说明解释了文本输入、显示格式及15位数值精度的区别。

导出xlsx后重新打开抽查,再交给比对工具。若清洗编号使两行变成同一关键字,工具会报重复关键字;这表示需要核对业务记录,不能为了跑通而删除其中一行。确实允许去重时,可先用Excel按列去重审查保留规则。多字段才能标识记录时,再参考编号与分组组成唯一键的例子,这与补零属于不同问题。

两个“忽略”选项不会替你补零

“忽略文本两端空格”处理的是文本开头和结尾的空格;“忽略文本大小写”处理的是字母大小写。本文第一组数据勾选这两项后,结果仍为新增1、删除1、修改0、未变1。它们不会把文本001变成数值1,也不负责识别内部空格、全角字符或不同长度代码。

金额列也要有一致的数据口径。数值10和文本10不是同一种类型,不要为了修好编号而把整张表所有列都转为文本。先决定编号是代码还是需要计算的数值,金额、日期、布尔字段分别核对,避免一次全列转换制造新的差异。

长编号已经变了最后几位,工具能还原吗?

不能。工具保留文本型长编号,但对数值只保留文件已经存下来的精度。16位及以上代码应在输入或导入前作为文本保存;若原表早已发生精度丢失,把它转为文本也只是保存错误值。必须回到可信原始数据,不要根据另一份表猜尾号。

为什么公式编号会报缓存错误?

工具不会执行Excel公式,只读取已保存的缓存结果。缺失缓存或存在错误单元格会拒绝处理,需在Excel中重新计算并保存,或在保留原件的前提下另存为值。它也不承诺保留样式、图表和宏,仅接受标准.xlsx。生成comparison.xlsx后,下载并检查Summary、Added、Deleted及其他结果工作表;页面统计不能证明文件已经保存到设备。

立即使用Excel两表比对