MS Excel и VBA: Объединение нескольких листов в один

 21 ноября 2016, понедельник Владимир  8672




Хочу поделиться с вами макросом, который позволяет объединить содержимое нескольких листов одной книги в один лист без потери данных. Такая задача может понадобиться совершенно для разных целей, поэтому сразу приступлю к демонстрации исходного кода на Visual Basic for Application (VBA).

MS Excel и VBA: Объединение нескольких листов в один

Исходный текст макроса:

Sub UnionPages()
For L = 2 To Sheets.Count
Sheets(L).Range("A1:Z" & Sheets(L).UsedRange.Rows.Count + 1).Copy Sheets(1).Range("A" & Sheets(1).UsedRange.Rows.Count)
Next
End Sub

Примечание:

  1. Для правильной работы нужно создать пустой лист с порядковым номером 1. Результат объединения будет помещаться в него.
  2. Лучше всего использовать MS Excel версии 2007 и выше, так как в нем высокий потолок ограничений на объем данных.
  3. Код макроса нужно поместить в текущую книгу через сочетание клавиш Alt - F11.
  4. Диапазон, который берется из листов, можно регулировать. В примере A1:Z.

На практике мне пришлось объединять листы в количестве более 200 шт. Макрос показал себя хорошо как по качеству так и по скорости обработки.