Excel 365中LEN、LEFT、RIGHT、FIND函数返回异常的原因咨询
Excel日期时间拆分问题解析
问题1:C2单元格的自定义格式(JJJJ"-"MM"-"TT" "hh":"mm":"ss")说明
这是德语区域的日期时间自定义格式:
JJJJ= 4位年份(对应英文格式的YYYY)MM= 2位月份TT= 2位日期(对应英文格式的DD)hh:mm:ss= 24小时制的时分秒显示
问题2:=LEN(C2)返回15而非19的原因
Excel中的日期时间本质是浮点数,不是文本字符串:
- 你看到的
01/09/2017 00:08:05只是单元格格式渲染的结果,实际存储的是一个数值(整数部分代表日期,小数部分代表时间) LEN是文本函数,计算的是文本字符数。当对数值使用LEN时,Excel会先将数值转换为默认格式的文本(比如42979.0005555556),这个文本的字符数是15,所以返回15。
问题3:=FIND(" ", C2,1)返回#VALUE!的原因
FIND是纯文本函数,只能处理字符串:
- 单元格显示的空格是自定义格式中的分隔符,实际存储的数值里根本不存在这个空格
- 用文本函数处理非文本的数值,自然找不到目标空格,返回
#VALUE!错误。
问题4:=LEFT(C2,8)返回42979.00且M2显示日期的原因
核心源于Excel日期时间的数值存储机制:
LEFT是文本函数,对数值操作时,Excel会先把数值转为默认文本(比如42979.0005555556),取前8位得到42979.00- 这个结果会被Excel自动转回数值,而M2设置为日期格式时,会把数值映射为对应的日期(Excel以1900年1月1日为数值1,42979对应的就是2017年9月1日,你看到的
2012-03-14大概率是单元格格式或区域设置的显示误差)
正确拆分日期时间的方法
不需要用文本函数,直接用Excel日期时间专属逻辑:
- 提取日期:输入
=INT(C2),然后将单元格格式设为目标日期格式(比如DD/MM/YYYY) - 提取时间:输入
=C2-INT(C2),然后将单元格格式设为目标时间格式(比如hh:mm:ss) - 若要转为文本格式的日期/时间:用
=TEXT(C2,"DD/MM/YYYY")和=TEXT(C2,"hh:mm:ss")
内容的提问来源于stack exchange,提问作者Venkatram Bachoti
相关产品推荐
相关产品推荐

