夜雨聆风学习资料网

ARTICLE · 1249485

身份证号粘进Excel,最后3位全变0?18位长数字导入前,先做这一步

身份证号粘进Excel,最后3位全变0?18位长数字导入前,先做这一步

Excel导入员工编号,怎么保留前导零并核对长数字

这是「表格不翻车」系列的第 2 篇,上一篇讲几份名单怎么合并,这一回单说名单里最脆弱的一列:编号。

先看看这几个眼熟的场面:学号 0012 粘进 Excel,抬头变成了 12;18 位的证件号、银行卡号粘进去,最后三位齐刷刷变成 000;一长串数字干脆显示成 1.38001E+10 这种看不懂的样子。小编把这类毛病叫作「编号变样」——它不出声、不报错,等你拿编号去系统里查、去另一张表里匹配,才发现全对不上。

编号为什么会变样

原因就一个:Excel 会把纯数字的编号当成数值来存。数值有两个规矩跟编号天生犯冲:

  • 数值不记前导零。在数学里 0012 和 12 是同一个数,所以零被直接扔掉;
  • 数值只保 15 位精度。超过 15 位的数字,从第 16 位开始全部按 0 存,存进去的那一刻就丢了,事后改格式也救不回来。

至于那串 1.38001E+10,是太长的数字被 Excel 用科学计数法显示了,本质还是同一件事:它被当成数了。

还没导入:先设文本,再粘贴

对付编号变样,最管用的动作在粘贴之前:先把编号那一列的格式设成「文本」,再往里放数据。

  • 直接粘贴:选中编号整列 → 设置单元格格式 → 选「文本」→ 确定,然后再粘贴;
  • 导入 CSV、TXT 这类文件:用「数据 → 自文本/CSV」导入,在向导里把编号那一列的类型指定为「文本」,不要让它按「常规」自动判断;
  • 别人发来的表已经是数值了:先别急着用,按下面的办法核对,能救的救,救不回来的回源头重取。

道理很简单:文本格式等于提前告诉 Excel「这一列是编号,不是数」,它就不会自作主张动你的零和位数。

已经变样了:分两种处理,别一刀切

前导零丢了,但位数规整(比如全单位统一 4 位、6 位编号):可以补回来。选中编号列,用自定义格式输几个 0(4 位就输 0000),显示立刻补齐;但要提醒一句,这种补法是「显示成」固定位数,拿去和别的表匹配之前,先确认对方存的也是同样的文本规则,对不齐就用 =TEXT(编号,"0000") 生成一列真正的文本编号再匹配。

长数字已经变 0 了:没救,别在坏数据上修。超过 15 位被截掉的位数是永久丢失的,任何格式魔法都变不回来。唯一正确的处理是回原始文件,按「先设文本」的方式重新导入一遍。这句话听着扫兴,但能帮你少走两个小时冤枉路。

导入完怎么核对:三招查出漏网的

  1. LEN 查位数:在旁边加一列 =LEN(编号),整列拉一遍。同一批编号位数应该整齐划一,哪几行位数不对,哪几行就有问题,一眼定位;
  2. 首尾抽查:把第一行和最后几行的编号,跟原始文件逐字对一遍,长编号重点盯末尾四位,那里是最容易变 0 的地方;
  3. 匹配前互查:要跟另一张表对编号时,先确认两边都是文本,再用 COUNTIF 两边互查,计数为 0 的拉出来单独看,别让一个变样的编号混进正式结果。

编号这列平时不起眼,坏起来最要命:它一变样,名单合并、查询、匹配全跟着错,而且错得无声无息。导入之前多花十秒设成文本,导入之后多花一分钟用 LEN 扫一遍,这两步就是小编能给你的全部保险。

下一篇是这个系列的第 3 篇,讲另一个同样高发的毛病:表格里的日期有的像文字、有的像数字,排起序来乱七八糟,怎么统一格式再按时间排。

(本文步骤依据微软 Excel 官方支持文档中「保留前导零与长编号」一篇整理;文中编号均为构造示例,不对应真实个人。本文由 AI 辅助整理成稿,内容经人工核对。)

相关学习资料