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