将日期从d / M / yy hh:mm tt转换为dd / MM / yyyy HH:mm

时间:2019-04-01 14:58:03

标签: excel excel-formula

如何将Excel中的日期从1/4/19 1:00 PM转换为01/04/2019 13:00

由于文件是从应用程序中以XLS格式导出的,因此日期以字符串形式存储(无法修改源)

2 个答案:

答案 0 :(得分:2)

下面是工作流程的图像,用于将日期从一种格式转换为另一种格式。最后,通过将所有辅助细胞替换为一个公式来结束。很难阅读但能胜任。

Answer

了解Excel的日期和时间

日期

Excel将日期存储为整数。它是自1900年1月0日以来的天数。所以1是1900年1月1日。(我相信Mac的参考年是1905,但我可能错了)。因此,excel中的所有日期都是简单的整数,并应用了一些特殊格式以我们惯常的方式显示它们。您可以通过在空白单元格中输入1进行测试,然后从“日期到脚趾”更改单元格格式。因此,如果您只需要从混合时间日期中查找日期,则只需去除整数部分即可。

TIME

时间存储为一天的百分比,或者如果您更喜欢一天的十进制,则存储时间。 0.5代表半天或午餐。同样,可以通过在空白单元格中输入0.5,然后将单元格格式从“常规”更改为“时间”来进行测试。如果只需要时间,则只需要去除小数部分即可。

组合的日期和时间

基于上述内容,您知道日期是整数,时间是小数。为了将两者结合在一起,只需要将它们添加在一起。在C21中,仅确定日期。在C22中,仅确定时间。在C23中,将两个元素简单地添加在一起,并应用了YY / MM / DD HH:MM的自定义单元格格式。 C23和C28之间的重要区别是C23是数字,C28是TEXT。

答案 1 :(得分:0)

如果我有一个显示为字符串的日期,则通常使用TextToColumns使其识别该日期,然后根据需要应用格式。我运行的代码是按列的:

Columns("D").TextToColumns DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False

请注意,我没有使用任何定界符。

然后格式如下:

Columns("D").NumberFormat = "MM/dd/yyyy HH:mm""

编辑1:

常规子例程格式如下:

Sub NameofMacro()
    Columns("D").TextToColumns DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False
    Columns("D").NumberFormat = "MM/dd/yyyy HH:mm""
End Sub