У меня есть набор строк, что я хочу превратиться в таблицу.
Существует ли путь в Excel для преобразования набора записей, каждый занимающий четыре строки в таблицу, куда каждая из этих четырех строк помещается в один из четырех столбцов?
В основном это:
a
b
c
d
a
b
c
d
кому:
a b c d
a b c d
Я не делаю от вершины o' моя голова, знают способ сделать это для Всех них, но можно вставить как это...
Это сделает это для ТОГО набора a/b/c/d. Я знаю, что это не полный ответ, но если нет слишком многих из них затем, это могло бы работать.
Вот быстрый макрос, который сделает транспонирование для Вас, если Вам нравится. Просто поместите все в столбец "A", и он поместит все это в B1, C1, D1, и т.д. Строки очерчены пробелами, и два пробелов подряд означают "остановку".
зафиксированный, должен работать хорошо максимум на 255 столбцов теперь. и да, можно использовать установку Transpose в функции pastespecial в vba, но это просто делает код более сложным для того же результата, таким образом, я сохранил это простым
Sub Macro1()
lastBlank = False
col = 2 'B
row = 1
For Each cell In Range("A:A")
v = Trim(CStr(cell))
If v = "" Then
If lastBlank = True Then Exit For
lastBlank = True
col = 2 'B
row = row + 1
Else
Cells(row, col) = v
col = col + 1
lastBlank = False
End If
Next
End Sub
Существует Excel, транспонируют функцию. Введите функцию к ячейке, где Вы хотите, чтобы транспонирование запустилось, затем используйте редактирование-> функции заливки для копирования функции боком (и вниз при необходимости).
Должен быть способ исправить индексацию строки (для составления пробелов) использование ADDRESS
функция.
Можно ввести эти формулы (предполагающий, что данные запускаются в A1), и заливка вниз насколько Вам нужно
B1 =IF(ISBLANK(A5),A1,"")
C1 =IF(ISBLANK(A5),A2,"")
D1 =IF(ISBLANK(A5),A3,"")
E1 =IF(ISBLANK(A5),A4,"")
Затем Копия и Вставка Специальные Значения. Затем вид для удаления пустых строк.
Если кто-либо все еще читает эту статью блога, вот другой способ сделать это (просто набор, которые располагают первую часть в ряд данных, находится в использовании постоянного FirstRow, и затем отпустите его)...
Sub TransposeRowsFourAtATime()
Dim X As Long, LastRow As Long, OffSetCounter As Long
Const FirstRow As Long = 2
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
For X = FirstRow To LastRow Step 5
Cells(FirstRow, "A").Offset(OffSetCounter).Resize(1, 4) = _
WorksheetFunction.Transpose(Cells(X, "A").Resize(4))
OffSetCounter = OffSetCounter + 1
Next
Range(Cells(FirstRow + OffSetCounter, "A"), Cells(LastRow, "A")).Clear
End Sub
Rick Rothstein (MVP - Excel)