В Excel, как я могу транспонировать несколько строк в один столбец?

1793
SVH

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

0
Было бы лучше очистить ваш первоначальный вопрос. Однако вместо двойной публикации удалите [первый вопрос] (http://superuser.com/questions/1039107/convert-rows-of-data-into-a-single-column). Благодарю. fixer1234 8 лет назад 0
Можете ли вы предоставить больше контекста? Например, вы можете просто выбрать и перетащить три коротких диапазона. Или вы можете просто использовать ссылки на ячейки (D1: = A1; перетащите вниз на несколько строк, затем D6: = B1 и т. Д.). Зачем вам нужно модно с функцией? Вы смотрели на использование OFFSET? Рекомендация конкретного решения действительно зависит от требований того, чего вы пытаетесь достичь. fixer1234 8 лет назад 0
** A1: A5 ** - это столбец, а не строка. Gary's Student 8 лет назад 0

2 ответа на вопрос

0
Gary's Student

With data in A1 through C5, in D1 enter:

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

and copy down. This will transpose the data into a single column:

enter image description here

It is equally easy to place the data into a single column without transposition.

0
root

Это будет игнорировать заголовки столбцов и не будет удалять данные из исходных ячеек. В зависимости от вашего рабочего листа вам может потребоваться изменить значения для столбцов.

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  

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

Похожие вопросы