2016-09-07 2 views
1

Я пытаюсь объединить 3 колонки все они имеют текст (строка) в нихКак объединить 3 колонки 1 новый столбец с VBA

позволяет говорить Колонка А как это:

  1. Привет "вы от?
  2. Привет" вы от?
  3. Привет "ты от

    Колонка B:

  4. Питер

  5. мама
  6. папа

Колонка C:

  1. DK
  2. JP
  3. GB

Я хочу, чтобы мой из положить в колонке D, чтобы быть:

  1. Привет Питер»ты от ДК?
  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) и Range (C1: C), но я понятия не имею, насколько чтобы вставить столбец, который я попробовал с помощью «Concatenate», но это просто испортило его.

ответ

2

Я бы использовал пару Replace functions на Range.Value2 property.

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 
Смежные вопросы