Excel で複数の行を 1 つの列に転置するにはどうすればよいですか?

Excel で複数の行を 1 つの列に転置するにはどうすればよいですか?

すべて同じ長さのデータ行があります (例: A1:A5、B1:B5、C1:C5 など)。これらを 1 つの列 (例: D1:D5、D6:D10、D11:D15 など) に入れたいのですが、ヘッダーや行識別子はありません。ROW 値と COLUMN 値の組み合わせで INDIRECT を使用すると機能すると思いますが、適切な組み合わせが見つからないようです。

答え1

データありA1を通してC5、 でD1入力:

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

コピーしてください。これで転置データを 1 つの列にまとめます。

ここに画像の説明を入力してください

転置せずにデータを 1 つの列に配置することも同様に簡単です。

答え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       

次に、元の列を手動で削除します。

関連情報