У меня есть лист Excel, как
A 1 2 3 4
B 1 2
C 1 2 3 4 5
Мне нужно, чтобы вывод выглядел как
A 1
A 2
A 3
A 4
B 1
B 2
C 1
C 2
C 3
C 4
C 5
Буду признателен, если кто-нибудь поможет найти решение для этого
У меня есть лист Excel, как
A 1 2 3 4
B 1 2
C 1 2 3 4 5
Мне нужно, чтобы вывод выглядел как
A 1
A 2
A 3
A 4
B 1
B 2
C 1
C 2
C 3
C 4
C 5
Буду признателен, если кто-нибудь поможет найти решение для этого
Вам нужно добиться этого с помощью кода VBA.
Предполагая, что ваш входной лист называется "input", а ваш выходной лист называется "output" и что входные данные запускают ячейку A1 без заголовков, будет работать следующий код:
Sub MakeOutput()
Dim iInputRow As Long
Dim iInputColumn As Long
Dim iOutputRow As Long
iOutputRow = 1 '- counter for which row to paste to
'- loop through each row on the input sheet
For iInputRow = 1 To Sheets("Input").Range("A" & Sheets("Input").Rows.Count).End(xlUp).Row
'- loop through each column inside of each row
For iInputColumn = 2 To Sheets("Input").Cells(iInputRow, 1).End(xlToRight).Column
Sheets("Output").Range("A" & iOutputRow).Value = Sheets("Input").Range("A" & iInputRow).Value
Sheets("Output").Range("B" & iOutputRow).Value = Sheets("Input").Cells(iInputRow, iInputColumn).Value
iOutputRow = iOutputRow + 1
Next iInputColumn
Next iInputRow
End Sub
Это делает то, что он проходит по каждой строке, если ваши входные данные начинаются с A1 и заканчиваются последней ячейкой в A, в которой есть данные.
Затем в каждой строке он проходит по каждому заполненному столбцу.
Для каждого из этих столбцов данных в вашем входном листе он копирует значения этой пары в выходной лист.