如何使用VBA将3列合并到1个新列

我试图合并3列,他们都有一个文本(string)在他们

可以说列A是这样的:

  1. 嗨“你是从哪里来的?
  2. 嗨“你是从哪里来的?
  3. 嗨“你是从哪里来的?

    B栏:

  4. 彼得

  5. 妈妈

C列:

  1. DK
  2. J.P
  3. GB

我想把我列出的D列放在:

  1. 嗨,彼得“你是DK吗?
  2. 嗨妈妈“你是从JP?
  3. 嗨,爸爸“你是从GB?

我自己的代码是这样的票价是:

Sub MergeColumns() Dim LR As Long Dim cell As Range, RNG As Range LR = Range("A" & Rows.Count).End(xlUp).Row Set RNG = Range("A1:A" & LR) For Each cell In RNG cell.Offset(0, 4) = Left(cell.Value, 2) & Range(B1:B) & Mid(cell.Value, 4, 13) & Range(C1:C) & Right(cell.Value, 1) Next cell Range("C:C").Columns.AutoFit End Sub 

我认为这个错误是在我的范围(B1:B)和范围(C1:C),但我不知道如何插入我试图与“连接”的列,但这只是搞砸了。

我会在Range.Value2属性上使用一对Replace函数 。

 Option Explicit Sub wqwewuy() Dim rw As Long, lr As Long With ActiveSheet lr = .Cells(.Rows.Count, "A").End(xlUp).Row For rw = 1 To lr .Cells(rw, "D") = Replace(Replace(.Cells(rw, "A").Value2, _ Chr(34), .Cells(rw, "B").Value2 & Chr(34)), _ Chr(63), .Cells(rw, "C").Value2 & Chr(63)) Next rw End With End Sub 

以前的答案是一个很好的解决scheme,你也可以这样做。

 Sub MergeColumns() Dim LR As Long Dim cell As Range, RNG As Range LR = Range("A" & Rows.Count).End(xlUp).Row Set RNG = Range("A1:A" & LR) For Each cell In RNG cell.Offset(0, 3) = Left(cell.Value, 2) & " " _ & cell.Offset(0, 1) & " " _ & Mid(cell.Value, 4, 13) & " " _ & cell.Offset(0, 2) & Right(cell.Value, 1) Next cell Range("C:C").Columns.AutoFit End Sub