将多个列行合并到一个单元格中

时间:2012-03-27 20:40:51

标签: excel vba excel-vba

我有一个看起来像这样的列

A
B
C

D
E

我需要将此列转换为行,每个空单元格标记新行,如下所示:

ABC
DE

在Excel中有一种简单的方法吗?

2 个答案:

答案 0 :(得分: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 :(得分: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

如果A列没有充满常量,您可以将其更改为 xlFormulas