Excel 在VBA中分离日期和时间
在我的数据中,日期时间格式在一列中为Excel 在VBA中分离日期和时间,excel,vba,Excel,Vba,在我的数据中,日期时间格式在一列中为15-02-2019 19:56。 我想将日期和时间分隔列。假设您的日期和时间在单元格A1中 在B1中使用以下公式 =--TEXT(A1,"dd/MMM/yyyy") 并在C1中使用以下公式 =--TEXT(A1,"hh:mm:ss") 并选择B1和C1,自定义日期和时间格式 请注意,当使用日期/日期时间时,Excel在单元格中显示的内容并不是Excel在单元格中实际保存为值的内容。Excel为该日期保存的值实际上是4351183056,这是自1900-0
15-02-2019 19:56
。
我想将日期和时间分隔列。假设您的日期和时间在单元格A1中 在B1中使用以下公式
=--TEXT(A1,"dd/MMM/yyyy")
并在C1中使用以下公式
=--TEXT(A1,"hh:mm:ss")
并选择B1和C1,自定义日期和时间格式
请注意,当使用日期/日期时间时,Excel在单元格中显示的内容并不是Excel在单元格中实际保存为值的内容。Excel为该日期保存的值实际上是
4351183056
,这是自1900-01-01
以来的天数。因此,时间是一天的一部分,因此由该值逗号后的部分表示
所以你可以使用
仅获取日期(并将单元格格式化为日期)=INT(B1)
仅获取时间(并将单元格格式化为时间)=B1-INT(B1)
=B1
在C和D中),只将一个格式化为日期,一个格式化为时间
在VBA中,可以使用相同的技术:
Option Explicit
Public Sub SplitDateAndTime()
Dim MyDateTime As Date
MyDateTime = Range("B1").Value
'get date
Range("C1").Value = Int(MyDateTime)
Range("C1").NumberFormat = "YYYY-MM-DD"
'get time
Range("D1").Value = MyDateTime - Int(MyDateTime)
Range("D1").NumberFormat = "hh:mm:ss"
End Sub
将单元格内容复制到另一列的可能副本。将一个单元格格式化为数据,将另一个单元格格式化为时间。Excel将所有日期时间信息存储为一个很长的数字。您看到的是单元格格式的结果,而不是单元格中存储的内容。@newguy您链接的副本实际上是一个糟糕的解决方案,因为
Format()
为这两个(日期和时间)返回一个字符串,并让Excel猜测将其转换为正确的日期值。永远不要将日期转换为字符串,除非它仅用于显示目的。Intead始终返回一个真实的日期值(Long
或者如果是与时间Double
)并使用数字格式更改其在Excel中的显示方式。如果你使用字符串,那就不可能用它来计算了!这不是一个好主意,因为=--TEXT(A1,“dd/MMM/yyyy”)
中使用的格式必须取决于操作系统使用的本地化,否则会得到#值代码>错误。•由于全球化正在发展,这将很容易失败永远不要将日期转换为字符串,除非它仅用于显示目的