【发布时间】:2022-06-14 17:23:09
【问题描述】:
我正在尝试将包含日期和时间组合的列拆分为两列,其中日期和时间是分开的。
C 列包含日期和时间的组合,例如“2022-01-01 09:30:00”。
这应该分为 D 列中的日期和 E 列中的时间,格式为“dd.mm.yyyy”和“hh:mm”:
D 列与 01.01.2022
E 列“09:30”
我需要与不同的工作表进行比较,它们是这种格式的。
虽然我设法将日期和时间分成两列,但时间格式是错误的。
我发现建议使用 Int() 获取日期,然后减去以获取时间,但是我的日期似乎是字符串。我尝试使用 Cdate 函数将我的列格式化为 Date 数据类型,但这导致了错误。
由于我不一定需要具有此数据类型的值,因此我认为我可以使用 Left() 和 Right() 函数。这首先给出了一个问题,但通过在两者之间包含一个字符串,我越来越接近我想要的。
Dim iAircol As Integer
Dim lastrow As Integer
Dim i As Integer
Dim str1 As String
Dim str2 As String
Dim spacepos as Int
iAircol= Worksheets(ws).Cells.Find(What:="Airdate", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
lastrow = Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To lastrow
spacepos = InStr(Cells(i, iAircol), " ")
str1 = Left(Cells(i, iAircol).Value, spacepos)
Cells(i, iAircol + 1) = str1
str2 = Left(Right(Cells(i, iAircol).Value, Len(Cells(i, iAircol)) - spacepos), 6)
Cells(i, iAircol + 2) = str2
Next i
我给单元格提供了总时间的前 5 个字符,所以不知道为什么它又以全部 8 个字符结束,现在这应该是一个字符串,但 Debug.Print 给了我类型“日期”日期和时间的 Double。
【问题讨论】:
-
日期不是字符串而是数字。与时间相同。您可以更改单元格的格式以匹配您想要的格式,但数量将保持不变。
-
我知道日期是数字,但是我文件中的日期似乎是字符串(我从外部来源获取它们)。当我检查 TypeName 时,它至少给了我字符串。