2012-03-27 2 views
0

У меня есть столбец, который выглядит, как этотОбъединение нескольких строк столбцов в одну ячейку

A 
B 
C 

D 
E 

мне нужно, чтобы включить этот столбец в строки, каждую пустую ячейку разметки новой строки, глядя, как это:

ABC 
DE 

Есть ли простой способ сделать это в Excel?

+0

Транспонирование не очень хорошо работает в этом случае, поскольку у меня есть ячейки более 500 КБ, разделенные пустой ячейкой в ​​этом столбце, и для каждой пустой ячейки необходимо преобразовать их в строки. – knarusk

+0

Используя только Excel, вы должны скопировать каждый блок букв, а затем вам нужно вставлять их с помощью транспонирования каждый раз. Я не думаю, что это можно сделать за один шаг, не используя макросы. –

+0

Слишком много ячеек для использования транспонирования, так что да, тогда нужен макрос. – knarusk

ответ

1

Если вы скопируете приведенный ниже код в модуле, он должен делать то, о чем вы просите (убедитесь, что лист с вашими данными является активным листом). Там нет проверки на достоверность данных - предполагается, что:

  • лист с данными представляет собой активный лист,
  • есть данные в колонке А

и выводит результат в колонке B .

Option Explicit 

Public Sub doIt() 

    Dim data As Variant 
    Dim result As Variant 
    Dim i As Long 
    Dim j As Long 

    data = ActiveSheet.UsedRange 
    ReDim result(1 To UBound(data, 1), 1 To 1) As Variant 

    j = 1 
    For i = 1 To UBound(data, 1) 
     If data(i, 1) = "" Then 
      j = j + 1 
     Else 
      result(j, 1) = result(j, 1) & data(i, 1) 
     End If 
    Next i 

    With ActiveSheet 
     .Cells(1, 2).Resize(UBound(result, 1), 1) = result 
    End With 

End Sub 
1

Мой подход использует метод AREAS(), совершенный, поскольку ваши группы данных разделены пустыми ячейками.

Option Explicit 

Sub ColumnToRows() 
Dim RNG As Range, a As Long 

    Set RNG = Range("A:A").SpecialCells(xlConstants) 

    For a = 1 To RNG.Areas.Count 
     RNG.Areas(a).Copy 
     Range("C" & Rows.Count).End(xlUp).Offset(1).PasteSpecial xlPasteAll, Transpose:=True 
    Next a 

    Application.CutCopyMode = False 
End Sub 

Если колонка А не полна констант, вы можете изменить, что xlFormulas.

Смежные вопросы