2016-09-07 34 views
1

我試圖合併3列他們都有他們的文本(字符串)如何3列合併到1分新列VBA

可以說,A列是這樣的:

  1. 嗨「你是否來自?
  2. 嗨」你是從哪裏來的?
  3. 嗨「你從

    B欄:?

  4. 彼得

  5. 媽媽
  6. 爸爸

柱C:

  1. DK
  2. JP
  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),但我不知道如何插入我嘗試與「連接」的列,但這只是搞砸了。

回答

2

我會在Range.Value2 property上使用一對Replace functions

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 
2

上一個答案是一個很好的解決方案,你也可以這樣做。

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