Excel - объединить несколько листов в один
вопрос
Я использую Excel для хранения информации о нескольких продуктах и у меня есть разные таблицы для каждого диапазона. Как объединить (последовательно объединить) все эти рабочие листы в одну страницу? Все листы одинакового количества столбцов, с одинаковым названием (в верхнем ряду).
Как действовать?
Решение
При условии, что:
1. Лист под названием «Консолидированный» может быть создан и удален макросом
2. Заголовки находятся в строке 1 на всех листах и являются общими для всех
3. Все листы должны быть скопированы
Sub CombineSheets () Dim lConRow в виде длинного затемненного листа в качестве варианта Dim sConsolidatedSheet в виде строки Dim lSheetRow в виде длинного Dim sLastCol в виде строки sConsolidatedSheet = "Consolidated" при ошибке Возобновить следующие листы (sConsolidatedSheet). Удалите при ошибке GoName 0 Sheets.Set. sConsolidatedSheet для каждого листа в листах, если Sheet.Name = sConsolidatedSheet Затем GoTo Next_Sheet If sLastCol = "" Тогда sLastCol = Sheet.Cells (1, Columns.Count) .End (xlToLeft) .Address Sheets (sConsolidatedSheet). 1 ") = Sheet.Range (" 1: 1 "). Значение lConRow = 1 Конец, если lSheetRow = 0 При ошибке Возобновить Далее lSheetRow = Sheet.Cells.Find (" * ", Ячейки (1, 1), SearchOrder: = xlByRows, SearchDirection: = xlPrevious) .Row при ошибке GoTo 0 If (lSheetRow> 1) Тогда Sheets (sConsolidatedSheet) .Range (lConRow + 1 & ":" & lSheetRow + lConRow - 1) = Sheet.Range ("2:" & lSheetRow) .Value lConRow = Sheets (sConsolidatedSheet) .Cells.Find ("*", Cells (1, 1), SearchOrder: = xlByRows, SearchDirection: = xlPrevious) .Row End If Next_Sheet: Next End Sub
Спасибо rizvisa1 за этот совет.