转换不受支持的日期格式(Microsoft Excel)
将其他程序中的信息加载到Excel中并不少见。
例如,您可能有另一个程序生成的数据,并且您想在Excel中分析该数据。当您将数据导入Excel时,在为信息分配适当的数据类型方面做得很好,它甚至可以解析和转换一些数据。
但是,谈到日期和时间时,并不是所有程序都以Excel可以理解的方式说话。例如,如果您的其他程序以“ Mon Jan 13 14:33:03 2011”的格式存储日期,则Excel将无法解析日期,您将需要以其他方式进行转换。
幸运的是,大多数程序以遵循模式的格式生成日期和时间。例如,假设“ Mon Jan 13 14:33:03 2001”代表所有日期之后的格式,则可以使用一个简单的公式进行转换:
=DATEVALUE(MID(A1,9,2)&MID(A1,5,3)&RIGHT(A1,4)) + TIMEVALUE(MID(A1,12,8))
此公式假定外部日期/时间格式在单元格A1中。
只需使用Excel的日期/时间格式之一来格式化公式的结果,就不会有问题。
如果愿意,可以使用“文本转换为列”功能将外部日期/时间格式分解为不可分割的部分:
。确保日期/时间右边有四个空列。
Excel将在此处放置日期/时间的各个部分。
。选择所有包含外国日期/时间的单元格。
。显示功能区的“数据”选项卡。
。单击“数据工具”组中的“文本到列”工具。 Excel启动“将文本转换为列”向导。 (请参见图1。)
。确保已选择“定界”,然后单击“下一步”。 Excel将显示向导的第二步。
。确保选中了空间复选框。
。单击完成。
现在,日期和时间分为五个单独的列。现在,您可以使用公式将有效的日期/时间放在一起。例如,假设日期/时间的分解版本位于单元格A1:E1中,则可以使用以下命令:
=(C1&B1&E1)+D2
同样,使用日期/时间格式设置结果的格式,一切就绪。
如果您更喜欢使用宏进行转换,则下面的宏将逐步遍历所有选定的单元格并进行转换:
Sub ConvDate() Dim c As Range For Each c In Selection.Cells c = DateValue(Mid(c, 5, 6) & ", " _ & Mid(c, 21, 4)) + TimeValue(Mid(c, 12, 8)) c.NumberFormat = "dd MMMM yyyy h:mm:ss" Next c End Sub
宏将文本字符串转换为可接受的日期/时间(使用DateValue),然后格式化单元格以显示value属性。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(9779)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: