解析非标准日期格式(Microsoft Excel)
Bill面临着将数据导入最初在其他应用程序中创建的Excel的挑战。问题在于数据中包含许多日期,但是它们的格式是Excel无法识别的。例如,日期的格式可以为01.15.11或1.15.2011,Excel都不将其视为日期。 Bill想知道如何将非标准日期转换为Excel可以理解的日期格式。
如果日期与您在区域设置中使用的序列格式相同,则转换很容易。例如,如果您的区域设置使用日期格式MDY(月,日,年,月),并且您要导入的日期具有相同的格式,则只需选择单元格并用斜杠替换句点即可。当Excel将1.15.2011更改为1/15/2011时,它将自动将结果解析为日期。
如果您要导入的格式与您的区域设置不匹配,则需要将日期改编为相同的格式。例如,如果您要导入的日期是01.10.11(2011年1月10日),并且系统将其解释为2011年10月1日,那么最简单的方法是将日期分成各个部分,然后将其放回原处。一起。请遵循以下一般步骤:
。在日期列的右侧插入三个空白列。
。选择包含非标准日期的单元格。
。使用“文本到列”向导(“数据” |“文本到列”)选择定界数据,并使用句点作为定界符。向导完成后,您将得到三列,分别包含月,日和年。
。在剩余的空白列中,输入如下公式:
。将公式复制到日期旁边的其他单元格中。
。选择包含刚创建的公式的单元格,然后按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培训的来源。
本技巧(3191)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: