Excel单元格中非标准日期格式的解析

Excel单元格中非标准日期格式的解析,excel,excel-formula,date-conversion,Excel,Excel Formula,Date Conversion,我想将格式为“2017年3月30日05:00:00.000”的日期转换为excel日期值?使用单元格公式而不是VBA,我能做的最优雅的解决方案是什么?如果您想要一个真实的日期并想要删除时间部分,那么: =DATEVALUE(SUBSTITUTE(LEFT(A1,FIND(",",A1)-1),"th",",")) 如果有“nd”和“st”序数,则需要嵌套SUBSTITUTE()函数来处理它们: =DATEVALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LEFT(A

我想将格式为“2017年3月30日05:00:00.000”的日期转换为excel日期值?使用单元格公式而不是VBA,我能做的最优雅的解决方案是什么?

如果您想要一个真实的日期并想要删除时间部分,那么:

=DATEVALUE(SUBSTITUTE(LEFT(A1,FIND(",",A1)-1),"th",","))
如果有“nd”和“st”序数,则需要嵌套SUBSTITUTE()函数来处理它们:

=DATEVALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LEFT(A1,FIND(",",A1)-1),"th",","),"nd",","),"st",","))

如果您想要一个真实的日期,并且想要删除时间部分,那么:

=DATEVALUE(SUBSTITUTE(LEFT(A1,FIND(",",A1)-1),"th",","))
如果有“nd”和“st”序数,则需要嵌套SUBSTITUTE()函数来处理它们:

=DATEVALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LEFT(A1,FIND(",",A1)-1),"th",","),"nd",","),"st",","))

嵌套的IFERROR函数可以处理各种数字序号

=--SUBSTITUTE(REPLACE(A2, IFERROR(FIND("st ", A2),IFERROR(FIND("nd ", A2),IFERROR(FIND("rd ", A2), IFERROR(FIND("th ", A2), LEN(A2))))), 3, ", "), ", ", " ",2)


我使用的自定义数字格式是
[Color10]mmmm-dd,yyyy-hh:mm:ss.000;;;[Color3]@
。除了文本左对齐和真实日期右对齐之外,这将使看起来像日期的文本以红色字体显示,真实日期以绿色字体显示。

嵌套的IFERROR函数可以处理各种数字序号

=--SUBSTITUTE(REPLACE(A2, IFERROR(FIND("st ", A2),IFERROR(FIND("nd ", A2),IFERROR(FIND("rd ", A2), IFERROR(FIND("th ", A2), LEN(A2))))), 3, ", "), ", ", " ",2)


我使用的自定义数字格式是
[Color10]mmmm-dd,yyyy-hh:mm:ss.000;;;[Color3]@
。除了文本是左对齐的,真实日期是右对齐的之外,这将使看起来像日期的文本以红色字体显示,真实日期以绿色字体显示。

这将执行标准的
“rd”、“th”、“st”、“nd”

您可以根据需要向公式中添加其他后缀


然后,您可以根据需要对其进行格式化。

这将执行标准的
“rd”、“th”、“st”、“nd”

您可以根据需要向公式中添加其他后缀


然后您可以根据需要格式化它。

毫秒是否始终为零?如果不是,它们是否重要?毫秒是否始终为零?如果不是的话,保留它们是否重要?你可能会发现st,nd,rd是个问题。你可能会发现st,nd,rd是个问题。