Excel日期列格式异常:LEFT函数提取返回序列号问题求助
解决Excel日期列用LEFT函数返回序列号的问题
问题根源
Excel中的日期本质是数字序列号(比如2012年3月14日对应的序列号是40997),设置单元格格式为日期只是改变它的显示样式,并没有把底层的数字转换成文本。所以直接用LEFT函数时,读取的是底层的数字,而不是显示的日期文本。
直接可用的解决方法
方法1:不用修改原列,用TEXT函数转换后提取
直接在需要提取前三个字符的单元格(比如L列)使用以下公式:
=LEFT(TEXT(D2,"mmmm dd, yyyy"),3)
- 把
D2换成你实际的单元格引用,下拉填充整列即可。 TEXT函数会把日期序列号转换成指定格式的文本(这里的"mmmm dd, yyyy"对应你要的“March 14, 2012”样式),之后LEFT就能正确提取文本的前三个字符。
方法2:批量将D列日期转为文本格式
如果需要把D列本身改成文本格式的日期,后续直接用LEFT提取:
- 插入一个空白辅助列(比如E列),在E1输入公式:
=TEXT(D1,"mmmm dd, yyyy") - 下拉填充E列,此时E列的内容是文本格式的日期。
- 选中E列,按
Ctrl+C复制,右键点击D列的第一个单元格,选择粘贴值(只粘贴内容,不粘贴公式)。 - 删除辅助列E,此时D列的日期已经是文本格式,直接用
=LEFT(D2,3)就能得到正确结果。
为什么之前的VBE方法没用
你尝试的Selection.Value = Selection.Value只是把单元格的公式转换为值,但日期的底层还是数字序列号,并没有改变它的数据类型,所以函数依然读取的是数字,而非显示的日期文本。
关于你的测试结果说明
- J列
=TRIM(D#)返回序列号:因为TRIM仅对文本生效,D列是数字类型,所以直接返回数字本身。 - K列
=ISTEXT(D#)除首行外均为FALSE:说明首行的内容是文本格式的日期,其他行是Excel默认的日期(数字类型)。
内容的提问来源于stack exchange,提问作者Ruth-Anne
相关产品推荐
相关产品推荐

