如何将Excel中的日期从1/4/19 1:00 PM
转换为01/04/2019 13:00
。
由于文件是从应用程序中以XLS格式导出的,因此日期以字符串形式存储(无法修改源)
答案 0 :(得分:2)
下面是工作流程的图像,用于将日期从一种格式转换为另一种格式。最后,通过将所有辅助细胞替换为一个公式来结束。很难阅读但能胜任。
Excel将日期存储为整数。它是自1900年1月0日以来的天数。所以1是1900年1月1日。(我相信Mac的参考年是1905,但我可能错了)。因此,excel中的所有日期都是简单的整数,并应用了一些特殊格式以我们惯常的方式显示它们。您可以通过在空白单元格中输入1进行测试,然后从“日期到脚趾”更改单元格格式。因此,如果您只需要从混合时间日期中查找日期,则只需去除整数部分即可。
时间存储为一天的百分比,或者如果您更喜欢一天的十进制,则存储时间。 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