辛辛苦苦整理了一下午的人员信息表,几百个身份证号码,一个个小心翼翼地敲进去,然后,一按回车,或者保存后重新打开,眼前一黑。
430...E+17
这串鬼东西是什么?我那完整的18位身份证号码呢?后面几位怎么就变成了000?整个世界仿佛都崩塌了,一下午的功夫,白干了。别急着砸键盘,也别骂Excel是个“人工智障”,我跟你讲,这事儿,十个办公室里有九个半的人都踩过这个坑。今天,咱就把这个老大难问题,从根儿上给它刨干净。
一、那个该死的“E+”到底是个啥?
首先你得明白,Excel骨子里是个搞数学的,是个理科生。在它眼里,一长串数字,那首先就是个“数值”,是用来加减乘除的。身份证号码虽然是数字组成的,但它的本质是什么?它是一串文本,一个独一无二的代码,你不会拿你的身份证号去跟别人的做加法,对吧?
问题就出在这儿。当Excel看到一个超过12位的数字时,它的“理科生”脑子就自动上线了,它会自作主张地启用“科学记数法”。这是一种为了简化超大或超小数字表达的方式。比如那个“4.30...E+17”,意思就是4.30...乘以10的17次方。
更要命的是Excel的计算精度。它能精确处理的数值,只有15位。一旦超过15位,从第16位开始,它就会直接给你变成0。身份证号码足足有18位,这简直就是精准踩在Excel的雷区上蹦迪。所以,一旦你让Excel把它当成“数值”来处理,那么恭喜你,你的数据从第16位开始,就已经永久性地丢失了,神仙也救不回来。
记住这个血的教训:身份证号码,以及所有类似的超长数字代码(比如某些单号),在Excel里,永远、必须、绝对要作为文本来对待!
二、怎么才能让Excel乖乖听话?三大法门,对症下药
知道了病根,我们就能开方子了。根据你遇到的不同情况,有几种不同的处理方式,从简单粗暴到一劳永逸,总有一款适合你。
第一招:【单引号大法】—— 临时救急,随手就来
这是最快、最直接,也是最广为人知的方法。在你输入任何一个身份证号码之前,先在英文输入法状态下,敲一个单引号 ' 。
比如,你要输入 430101199001011234,那么在单元格里,你实际输入的是 '430101199001011234。
回车之后,你会发现,身份证号码完整地显示出来了!那个单引号本身并不会显示在单元格里,它只是一个“暗号”,告诉Excel:“喂,别自作多情了,我接下来要输入的是一串正儿八经的文本,你别给我乱动!”
这个方法的好处是立竿见影,非常适合偶尔输入一两个号码的场景。
但它也有个小小的“后遗症”。你会看到单元格左上角出现一个绿色的小三角,鼠标放上去,Excel会提示你“该单元格内的数字为文本格式,或前面有撇号”。这是Excel在尽它最后的努力提醒你:“你确定这串数字不拿来计算吗?”。对于我们来说,直接忽略它,或者选中这些单元格,点击旁边出现的感叹号图标,选择“忽略错误”就行了。这个绿色小三角不影响打印,也不影响数据使用,就是看着有点碍眼,逼死强迫症而已。
第二招:【设置单元格格式】—— 釜底抽薪,一劳永逸
如果你要处理一整列,甚至一整张表的身份证号码,用单引号一个个去加,那简直是酷刑。这时候,就需要更高级的玩法——预先设置单元格格式。
这才是最推荐、最专业的做法。
步骤很简单:
- 选中目标区域。可以是一整列(直接点击列标,比如D列),也可以是你计划要输入身份证号码的那些单元格。
- 右键点击,在弹出的菜单里选择
设置单元格格式。你也可以用快捷键Ctrl + 1,更快。 - 在弹出的“设置单元格格式”对话框里,找到“数字”这个选项卡。
- 在左侧的“分类”列表里,拉到最下面,找到并选中
文本。 - 点击“确定”。
好了,仪式完成。现在,你选中的这片区域,已经被你“开过光”了。在这片区域里,无论你输入多长的数字,Excel都会老老实实地把它当成文本来显示,18位、20位,都原封不动,绝对不会再出现那个烦人的“E+”。
关键点:一定要在输入数据之前就设置好! 如果你已经输入了,数据已经变成了科学记数法,你再回头去设置单元格格式为“文本”,是没用的!因为数据在那一刻已经丢失了,你只是在给一具“尸体”化妆,救不活了。
第三招:【数据分列/导入向导】—— 批量导入,大神的玩法
还有一种情况更复杂。数据不是你手动输入的,而是从别的系统(比如TXT文档、CSV文件)里导出来的。当你直接用Excel打开这些文件时,悲剧往往已经发生了。
这时候,就需要动用Excel的数据导入功能了,这能让你在数据进入工作表之前,就给它规定好“身份”。
以Excel 2016及之后的版本为例:
- 不要直接双击打开那个TXT或CSV文件。先打开一个空白的Excel工作簿。
- 点击菜单栏的
数据选项卡。 - 在左侧找到
自文本/CSV这个按钮,点击它。 - 在弹出的窗口里,选择你要导入的那个数据文件。
- 接下来,Excel会弹出一个预览窗口。这才是整个过程最关键的一步!在这个窗口里,你会看到你的数据被自动分成了几列。找到含有身份证号码的那一列,用鼠标点击一下它的列标题,选中它。
- 然后,在窗口上方的
数据类型检测相关的选项里(或者在下方的“转换数据”进入Power Query编辑器里),把这一列的数据类型,从“常规”或者“整数”毅然决然地改成文本。 - 确认无误后,再点击“加载”。
通过这个方法导入的数据,身份证号码那一列从一开始就被定义为文本格式,自然也就完美避开了所有坑。这个方法对于处理大量外部数据源的情况,简直是神器。
三、输入之后呢?那些基于身份证号码的骚操作
仅仅是正确输入,那只是第一步。一个合格的“表哥”“表姐”,还要懂得如何利用这串神奇的数字。
既然身份证号码已经是文本格式了,我们就可以用Excel里强大的文本函数来对它“动手动脚”。
比如说,你想批量提取出生年月日。身份证号码的第7到第14位就是出生年月日。
这时候,MID 函数就该登场了。假设身份证号码在A2单元格,你可以在B2单元格输入公式:
=MID(A2, 7, 8)
这个公式的意思是:从A2单元格的文本里,从第7个字符开始,提取8个字符。瞬间,所有人的出生日期就都出来了。想提取出生年份?那就用 =MID(A2, 7, 4)。想提取性别(第17位,奇数为男,偶数为女)?那就用 =IF(MOD(MID(A2,17,1),2)=1,"男","女")。
看,一旦你把它当成文本,整个世界都开阔了。
还有一个经典的坑,就是 VLOOKUP 查询。很多人会发现,明明两个表里都有同一个人的身份证号,用VLOOKUP去匹配,死活就是 #N/A 错误。原因大概率就是一个表里的身份证号是文本格式(比如我们用正确方法输入的),另一个表里的是数值格式(或者前面15位是数字,后面是0的“假货”)。
在Excel眼里,文本“430101...”和数值430101...是两个完全不同的东西。解决办法就是,统一它们的格式。要么把两边都彻底变成文本格式,要么在VLOOKUP公式里做一点手脚,比如用 VLOOKUP(A2&"", ...) 这样的方式,把要查找的单元格强制转换成文本再去匹配。
所以,你看,一个小小的身份证号码输入问题,背后其实是Excel数据类型的核心逻辑。理解了它,你就不再是那个只会对着“E+”发呆的小白了。下次再有同事遇到这个问题,你就可以云淡风轻地走过去,告诉他:“别慌,这串数字,它不是数字。来,我教你。”
【你是不是也经历过这种绝望?】相关文章:
word怎么excel一列表格12-15
在制作excel表格怎么做的12-15
“Excel怎么一分为二?”12-15
excel中的饼图怎么做的12-15
excel下拉菜单二级怎么做12-15
你是不是也经历过这种绝望?12-15
怎么在excel一个单元格里换行12-15
Excel内框线怎么设置颜色设置颜色设置12-15
excel怎么套用格式12-15
那个单元格右上角,不起眼的红色小三角,像不像一个秘密的标记?12-15
怎么使用excel筛选12-15
excel怎么编辑链接12-15