首页 / 农历对照

表格数字变成 1E+12,先别改格式,先核对这一处

表格数字变成 1E+12,先别改格式,先核对这一处

判断标准只有一条:把单元格点开看编辑栏。表格变成别改编辑栏里如果还是数字完整的 15 位、18 位数字,先先核只是格式格子显示成 1.23457E+12,那是对处显示格式问题;编辑栏里本身已经变成尾数全 0 或提前截断,那就是表格变成别改数据在进入表格那一刻就丢了,改格式救不回来。数字这条标准当场可核对,先先核也决定了后面所有动作的格式顺序。

下面按我上周处理一次失手的对处真实顺序复盘。事情不大,表格变成别改但每一步都值得记下来。数字

当时我先改了列格式,先先核结果白忙十分钟

出问题的格式是供应商发来的对账表,A 列是对处物流单号,一列十几位数字。打开时整列显示成 1.23E+13 的样子,我第一反应是选中整列,右键设置单元格格式,改成“数值”,小数位调到 0。改完确实有一半恢复了长数字,另一半仍然显示成 1.23457E+13,而且末尾几位变成了 0。

这一步的错误在于顺序。格式是“显示层”的设置,它只能决定一个已经存在的数值怎么呈现,不能把已经丢失的位数找回来。我在没确认数据本身是否完整的情况下就动手,等于给一个已经残缺的值换了件衣服。后来回想,如果第一步是点开单个单元格看编辑栏,十秒钟就能判断清楚,不至于来回折腾。

点开编辑栏,才分清是显示问题还是数据问题

冷静下来后,我做了三件事,顺序不能颠倒。

第一步,单击一个显示异常的单元格,看编辑栏里的原始内容。如果编辑栏是完整的,说明值没问题,只需要调列宽或改格式;如果编辑栏里已经是 1.23457E+13 这种形式,说明表格在解析时就把这串字符当成数值处理,超过 15 位有效数字的部分被抹掉了,这就是数据问题。

第二步,横向对比。同一列里,短一点的单号显示正常,长的都变形,基本可以确认是精度截断,而不是格式没设对。Excel 的数值精度上限是 15 位有效数字,这是软件本身的规则,不是设置项,也没法通过调格式突破。

第三步,回到源头看原始文件。我打开供应商发来的原始表格,发现对方也是从系统导出的,导出时那一列已经是数值型。也就是说,丢失发生在导出环节,不在我这边。这一步很关键,它决定了我是该在自己表里补救,还是该找对方重新导一份。这也是我后来总结的:遇到 Excel 科学计数出问题先查什么,答案不是先查格式,而是先查编辑栏和上游文件。

补救分两条路:能重导就重导,不能重导就走文本通道

确认是数据问题后,我分两种情况处理。

能联系上对方的,直接请对方按文本格式重新导出一份。具体说法是:导出时把单号列设为文本,或者在数字前加英文单引号。对方系统如果支持导出 CSV,也可以让对方直接给 CSV,我再在自己的表里用“数据—自文本”导入,导入向导里把那一列指定为文本。这条路最干净,缺点是依赖对方配合。

联系不上对方的,只能从已有文件里抢救。如果原始文件里还留着完整的字符串(比如在 CSV 或记事本里能看到完整单号),就不要再双击打开,改用导入的方式进表,并在向导里把该列设为文本。如果连原始字符串都没有了,那就只能承认这一列不可恢复,转而用订单号、日期加金额去和对方逐条核对。这一点要说清楚:已经变成 0 的尾数,任何格式设置都变不回来,不要在这上面耗时间。

顺带说一个容易忽略的细节:把一列数字改成文本格式后,如果之前已经录入过,格式变更不会自动把值转成文本,需要重新录入或粘贴。这个顺序错了,会以为设置没生效。

下次打开这类表,我固定先做这两步

现在拿到任何带长编号的表,我固定先做两步。第一步,不双击,先看文件后缀,CSV 一律走导入,不走直接打开。第二步,导入向导里逐列确认数据类型,编号类列一律选文本,日期列单独确认格式,不交给默认判断。

如果表已经在别人手里打开过、改过,那就回到最开始那条标准:点开单元格看编辑栏。编辑栏完整,调显示;编辑栏残缺,找源头。判断在前,动作在后,这一步省不掉。

作者:技术问答