Bill面临着将数据导入最初由其他应用程序创建的Excel的挑战。问题在于数据包含很多日期,但是它们的格式是Excel无法识别的。例如,日期的格式可以为09.15.20或9.15.2020,Excel都不将其视为日期。 Bill想知道如何将非标准日期转换为Excel可以理解的日期格式。

如果日期与您在区域设置中使用的序列格式相同,则转换很容易。例如,如果您的区域设置使用日期格式MDY(月,日,年,月),并且您要导入的日期具有相同的格式,则只需选择单元格并用斜杠替换句点即可。当Excel将9.15.2020更改为9/15/2020时,它将自动将结果解析为日期。

如果您要导入的格式与您的区域设置不匹配,则需要将日期改编为相同的格式。例如,如果您要导入的日期是09.10.20(2020年9月10日),并且系统将其解释为2020年10月9日,那么最简单的方法是将日期分成各个部分,然后将其放回一起。请遵循以下一般步骤:

。在日期列的右侧插入三个空白列。

。选择包含非标准日期的单元格。

。使用“文本转换为列”工具(位于功能区“数据”选项卡上的“数据工具”组中),选择定界数据并将句点用作定界符。向导完成后,您将得到三列,分别包含月,日和年。

。在剩余的空白栏中,输入如下公式:

。将公式复制到日期旁边的其他单元格中。

。选择包含刚创建的公式的单元格,然后按Ctrl + C。

。使用选择性粘贴将公式转换为结果。 (使用“选择性粘贴”时,选择“值”选项。)

。删除包含分隔日期的三列,并保留包含最终日期的列。

另一种解决方案是简单地使用宏进行转换。以下是用户定义的函数,该函数采用非标准日期并将其转换为格式正确的日期值。宏也会在月份和日期的位置之间切换,就像在“文本到列”技术中所做的那样。

Public Function Convert_Date(A As String) As Date     Dim K As Long     Dim K1 As Long     Dim K2 As Long

K = Len(A)

K1 = InStr(1, A, ".")

K2 = InStr(K1 + 1, A, ".")

Convert_Date = DateSerial(Val(Mid(A, K2 + 1, _       K - K2 + 1)), Val(Mid(A, K1 + 1, K2 - K1)), _       Val(Mid(A, 1, K1 - 1)))

End Function

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(9837)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: