
Я пытаюсь перенести информацию с одного листа на другой в одной и той же рабочей книге.
Однако мне бы хотелось, чтобы положительные ячейки импортировались на последовательные листы с указанием имени их столбца.
Например:
| Example1 | Example2 | Example3
-----------+-----------+----------+----------
List One | x | | x
List Two | x | x |
List Three | x | |
Поэтому я хотел бы
на Листе2 -Список первый
- Пример1
- Пример3
На Листе3 -Список два
- Пример1
- Пример2
На листе 4 -Список третий
- Пример1
Надеюсь, это имеет хоть какой-то смысл для кого-то! Извините за ужасный код, ржавый ржавый ржавый!
решение1
Я предполагаю, что ваши заголовки находятся в строке 1, а данные начинаются со строки 2.
В 1-м столбце(здесь строка не имеет значения)из других ваших листов введите эту формулу =OFFSET(Sheet1!$A$1,0,SMALL(IF(2:2="X",COLUMN(2:2)),COLUMN())-1)
как формулу массива с Ctrl+ Shift+Enter
Копируйте это по всей строке, и это выведет список названий столбцов. Конец достигается, когда формула начинает выдавать #NUM!
ошибки.
Для листа 3 измените 2:2 на 3:3 и так далее для последующих листов.
решение2
Это позволяет вам иметь большее количество строк и столбцов и предполагает что угодно, а не просто "x". Вы можете быть уверены, что это всегда "x" и изменить это довольно легко. Также я сделал эти листы имен в соответствии с их именем списка. Если добавление листов не произойдет, вы можете удалить эту часть.
Sub columnsToListSheets()
LastCol = Sheets("Sheet1").UsedRange.Columns.Count
For rowNumber = 2 To 4
i = 1
ListName = Sheets("Sheet1").Cells(rowNumber, 1)
Sheets.Add
NewSheet = ActiveSheet.Name
Worksheets(NewSheet).Cells(1, 1) = ListName
'You may want to name the worksheet after the list
Worksheets(NewSheet).Name = ListName
For colNumber = 2 To LastCol
'"x" may be good enough to test for
If Worksheets("Sheet1").Cells(rowNumber, colNumber) <> "" Then
i = i + 1
'Worksheets(NewSheet).Cells(i, 1) = Worksheets("Sheet1").Cells(1, colNumber)
Worksheets(ListName).Cells(i, 1) = Worksheets("Sheet1").Cells(1, colNumber)
End If
Next colNumber
Next rowNumber
End Sub