【问题标题】:excel vba - concatenate two cell's content to anotherexcel vba - 将两个单元格的内容连接到另一个
【发布时间】:2018-10-14 11:51:53
【问题描述】:

我有两列需要在第三列中合并一个位置。我试过=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

【问题讨论】:

    标签: vba excel excel-formula concatenation


    【解决方案1】:

    您不需要 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:220,044004631

    因此,如果我们将两者相加(日期值 + 时间值):43134 + 0,0440046 = 43134,0440046 并将其格式化为日期,Excel 会将其理解为 2018-02-03 01:03:22(距离 43134,0440046 仅几天1900-01-01 00:00:00)。

    【讨论】:

      【解决方案2】:

      由于两列都包含日期(和时间)对象,您可以简单地对这些值求和。 Excel 中的每个日期(和时间)都转换为数字(天=1,小时=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
      

      【讨论】:

        【解决方案3】:

        在连接之前,您应该尝试将其转换为字符串

        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
        

        祝你好运

        【讨论】:

        • 请注意 Dim s, ss, sss As String 仅定义 sss As Stringsss 仍然是 Variant 类型。您需要为 每个 变量 Dim s As String, ss As String, sss As String 指定一个类型,并且永远不会使用 sss,因此不需要声明。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多