在 Excel 中,如何将多行转置为一列?

在 Excel 中,如何将多行转置为一列?

我有多行长度相同的数据,例如 A1:A5、B1:B5、C1:C5 等。我想将它们放入单个列中,例如 D1:D5、D6:D10、D11:D15 等。没有标题或行标识符。我认为使用 INDIRECT 结合 ROW 和 COLUMN 值应该可行,但我似乎找不到正确的组合。

答案1

数据在A1通过C5, 在D1进入:

=OFFSET($A$1,ROUNDUP(ROWS($1:1)/3,0)-1,MOD(ROWS($1:1)-1,3))

并抄下来。这将转置将数据放到一列中:

在此处输入图片描述

同样可以轻松地将数据放入单个列中而无需转置。

答案2

这将忽略列标题,并且不会删除原始单元格中的数据。根据您的工作表,您可能需要更改列的值。

Sub Macro1()

  Const firstRowWithData = 2 ' assumes labels in row 1
  Dim anyWS As Worksheet
  Dim copyRange As Range
  Dim CP As Integer

  For Each anyWS In ThisWorkbook.Worksheets
    For CP = Range("B1").Column To Range("D1").Column
      Set copyRange = anyWS.Range(anyWS.Cells(2, CP).Address & ":" & _
       anyWS.Cells(Rows.Count, CP).End(xlUp).Address)
      copyRange.Copy anyWS.Range("A" & Rows.Count).End(xlUp).Offset(1, 0)
    Next
  Next

End Sub

A Header    B Header    C Header
a           b           c
a           b           c
a           b           c

A Header    B Header    C Header
a           b           c
a           b           c
a           b           c
b       
b       
b       
c       
c       
c       

然后手动删除原来的列。

相关内容