2012-03-27 101 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