У меня есть строки данных одинаковой длины, например, A1:A5, B1:B5, C1:C5 и т.д. Я хочу поместить их в один столбец, например D1:D5, D6:D10, D11:D15 и т.д. Там нет заголовков или идентификаторов строк. Я думаю, что использование INDIRECT с комбинацией значений ROW и COLUMN должно работать, но я не могу найти правильную комбинацию.
2 ответа
0
Это будет игнорировать заголовки столбцов и не будет удалять данные из исходных ячеек. В зависимости от вашего рабочего листа вам может потребоваться изменить значения для столбцов.
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
Затем вручную удалите исходные столбцы.