У меня есть строки данных одинаковой длины, например, A1:A5, B1:B5, C1:C5 и т.д. Я хочу поместить их в один столбец, например D1:D5, D6:D10, D11:D15 и т.д. Там нет заголовков или идентификаторов строк. Я думаю, что использование INDIRECT с комбинацией значений ROW и COLUMN должно работать, но я не могу найти правильную комбинацию.

2 ответа2

0

С данными от A1 до C5, в D1 введите:

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

и скопировать вниз. Это перенесет данные в один столбец:

Одинаково легко поместить данные в один столбец без транспонирования.

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       

Затем вручную удалите исходные столбцы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .