我需要两列来组合第三列中的位置。我试过=CONCATENATE(A1," ", B1)
,但结果是错误的(它变成了一个整数)。另外,我需要在vba代码中使用它,因为我正在尝试自动化某些东西。
Column A | Column B | 3rd column Desired result
2018-02-03 | 01:03:22 | 2018-02-03 01:03:22
2018-01-01 | 13:44:22 | 2018-01-01 13:44:22
2018-04-11 | 20:44:43 | 2018-04-11 20:44:43
答案 0 :(得分:2)
你不需要VBA!
在连接之前,您可以使用TEXT(A1,"yyyy-mm-dd")
轻松地将日期转换为所需的格式。
=CONCATENATE(TEXT(A1,"yyyy-mm-dd")," ", TEXT(B1,"yyyy-mm-dd"))
然后你将它作为文本而不是日期/时间了!这意味着您无法再计算该日期。
在3ʳᵈ列中使用公式=A1+B1
,然后使用自定义格式dd-mm-yyyy hh:mm:ss;@
格式化3ʳᵈ列,如下所示:
这样,3ʳᵈ列仍然是您可以使用的计算日期/时间。
那么为什么简单地添加=A1+B1
呢?
Excel中的日期基本上保存为1900-01-01
(日1
)后的天数。所以2018-02-03
是自那时起的43134ᵗʰ日。
Excel中的时间将保存为1
天的一部分,这意味着01:03:22
为0,04400463
天的1
因此,如果我们将两者(日期值+时间值):43134 + 0,0440046 = 43134,0440046
相加并将其格式化为日期,Excel会将其理解为2018-02-03 01:03:22
(距43134,0440046
天1900-01-01 00:00:00
天1}})。
答案 1 :(得分:0)
在concantenate之前,您应该尝试将其转换为字符串
Sub test()
Dim s, ss, sss As String
s = Me.Range("H10").Value
ss = CStr(Me.Range("I10").Value)
Me.Range("J10").Value = s & ss
End Sub
祝你好运
答案 2 :(得分:0)
由于两列都包含日期(和时间)对象,因此您可以简单地对这些值求和。 Excel中的每个日期(和时间)都将转换为数字(day = 1,hour = 1/24)。要使用VBA完成任务:
Sub add_dates()
' loop over non-empty cells at 1st column
i = 2
Do While Cells(i, 1) <> ""
Cells(i, 3) = Cells(i, 1) + Cells(i, 2)
i = i + 1
Loop
' Format range if necessary
Range("C:C").NumberFormat = "dd-mm-yyyy hh:mm:ss;@"
End Sub