VBA连接日期和文本

时间:2018-11-17 02:06:54

标签: excel vba concatenation

我正在尝试将B和C列连接到O列。

我的代码是这个。该代码给出的是金额而不是日期。任何帮助,将不胜感激。

Sub ConcatJEcomment()

  Dim LastRow As Long
  LastRow = Cells(Rows.Count, "A").End(xlUp).Row
  Range("O2:O" & LastRow) = Evaluate(Replace("B2:B#&"" - ""&C2:C#", "#", LastRow))
  'You want to pull date and Type -- in this order
  'Range = where do you want this to be put

End Sub

spreadsheet screenshot

2 个答案:

答案 0 :(得分:0)

尝试一下:

<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>

答案 1 :(得分:0)

文本和数组

一线吗?不!

Excel公式

=TEXT(B2,"MM/DD/YYYY")&" - "&C2

工作正常。

我很惊讶最初的 VBA公式

Range("O2:O" & LastRow) = Evaluate(Replace("B2:B#&"" - ""&C2:C#", "#", LastRow))

甚至可以工作。因此,遵循其逻辑,我得出结论:

Range("O2:O" & LastRow) = Evaluate( _
    Replace("TEXT(B2:B#,""MM/DD/YYYY"")&"" - ""&C2:C#", "#", LastRow))

它不起作用,似乎 TEXT 函数不喜欢数组。结果始终是第二行(数据的第一行)中的连接值。

解决方案

您可以随时在范围内循环:

Sub ConcatJEcomment()

  Dim LastRow As Long
  Dim lngRow As Long ' Row Counter
  LastRow = Cells(Rows.Count, "A").End(xlUp).Row

  For lngRow = 2 To LastRow
    Range("O" & lngRow) = Range("B" & lngRow).Text _
        & " - " & Range("C" & lngRow).Text
  Next

End Sub

另一个问题

由于我的系统使用“ ”而不是“ / ”作为日期分隔符,因此我想用斜杠显示结果:

    Range("O" & lngRow) = Format(Range("B" & lngRow), "MM/DD/YYYY") _
        & " - " & Range("C" & lngRow).Text

Excel公式做到了这一点没有问题,但是在这里它不起作用。没有斜线!?

一种解决方法是:

    Range("O" & lngRow) = Replace(Format(Range("B" & lngRow), "MM/DD/YYYY"), _
        ".", "/") & " - " & Range("C" & lngRow).Text

我希望有人能弄清单线。