2012-03-27 98 views
0

我有一個看起來像這樣合併多列行成單細胞

A 
B 
C 

D 
E 

我需要把此列成行,每個空單元格標記新行,看起來像這樣的列:

ABC 
DE 

有沒有一種簡單的方法在Excel中做到這一點?

+0

Transpose在這種情況下效果不好,因爲我有超過500k個單元格與該列中的空單元格分隔,並且需要在每個空單元格之後變成行。 – knarusk 2012-03-27 20:49:03

+0

只使用Excel,您必須複製每一個字母塊,然後您需要每次都將它們與轉置粘貼。我不認爲這可以在不使用宏的情況下一步完成。 – 2012-03-27 20:44:42

+0

太多的單元格使用轉置所以是的,那麼需要一個宏。 – knarusk 2012-03-27 20:52:06

回答

1

如果您在模塊中複製下面的代碼,它應該按照您的要求進行操作(確保包含您的數據的表單是活動表單)。存在用於數據的有效性沒有檢查 - 它假定:

  • 與數據片材是活動片,
  • 有在列A

數據,並將其結果輸出在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

我的做法,採用區域()方法,完美的,因爲你的數據組由空白單元格分隔。

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 

如果A列是不是滿的常量,您可以更改到xlFormulas