Понякога искаме да обединим няколко листа в един лист, за да можем лесно да анализираме данните и да ги превърнем в полезна информация. Тази статия ще ви разкаже как да обедините няколко работни листа в един работен лист с помощта на VBA.
Пример:
Тук съм извлекъл някои данни от сървъра, който връща данни в различни работни листове. Добавих още един лист и го нарекох „Master“. Другите имена на листове нямат значение.
Сега стартирайте този макрос.
Sub Merge_Sheets () Dim startRow, startCol, lastRow, lastCol As Long Dim headers As Range 'Set Master sheet for consolidation Set mtr = Worksheets ("Master") Set wb = ThisWorkbook' Get Headers Set headers = Application.InputBox ("Изберете Заглавки ", Тип: = 8)" Копиране на заглавки в главни заглавки. Копиране на mtr.Range ("A1") startRow = headers.Row + 1 startCol = заглавия. Колона Debug.Print startRow, startCol 'цикъл през всички листове за всеки ws В wb.Worksheets 'с изключение на главния лист от цикъл Ако ws.Name "Master" Тогава ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns.Count). Край (xlToLeft). Колоната „получава данни от всеки работен лист и ги копира в обхвата на главния лист (клетки (startRow, startCol), клетки (lastRow, lastCol)). Копирайте _ mtr.Range (" A "& mtr.Cells (редове .Count, 1) .End (xlUp) .Row + 1) End If Next ws Worksheets ("Master"). Активирайте End Sub
Как да обединим листа с помощта на този VBA макрос?
- Поставете нов лист и го наречете „Master“ в работната книга. Преименувайте го по -късно, ако искате.
- Вмъкнете модул във VBA редактор и копирайте над VBA кода.
- Стартирайте макроса.
- Ще бъдете помолени да изберете заглавия. Изберете заглавието и натиснете OK.
И е направено. Всички листове се обединяват в master.
Как работи?
Предполагам, че знаете основите на създаването на обекти и променливи във VBA. в първата част създадохме обект и променливи, които ще ни трябват в нашите операции.
Е, повечето от нещата, които обясних, използвайки коментари във vba код. Нека разгледаме основната част от този vba код.
За всеки ws В wb.Worksheets 'с изключение на главния лист от цикъл Ако ws.Name "Master" След това ws.Activate lastRow = Cells (Rows.Count, startCol) .End (xlUp) .Row lastCol = Cells (startRow, Columns. Count) .End (xlToLeft) .Column 'вземете данни от всеки работен лист и ги копирайте в Range Master List (Cells (startRow, startCol), Cells (lastRow, lastCol)). Copy _ mtr.Range ("A" & mtr. Клетки (редове. Брой, 1). Край (xlUp). Ред + 1) край, ако следващи ws
В по -ранни статии научихме как да преглеждаме листове и как да получим последния ред и колона с помощта на vba.
Тук преминаваме през всеки лист в основната работна книга, използвайки цикъл for.
За всеки ws В wb.Worksheets
След това изключваме „главен“ лист от цикъл, тъй като ще консолидираме данните си в този лист.
След това получаваме последния ред и последния номер на колоната.
Сега следващият ред е много важен. Направихме множество операции в един ред.
Диапазон (клетки (startRow, startCol), клетки (lastRow, lastCol)). Копирай _
mtr.Range ("A" & mtr.Cells (Rows.Count, 1) .End (xlUp) .Row + 1)
Първо формираме диапазон, използвайки startRow, startCol и lastRow и lastCol.
Обхват (клетки (startRow, startCol), клетки (lastRow, lastCol)) Копирахме го с помощта на метода за копиране на range. Диапазон (клетки (startRow, startCol), клетки (lastRow, lastCol)) Копиране Ние го поставихме директно в първата празна клетка след последната непразна клетка в колона А на главния лист (mtr.Cells (Rows.Count, 1). End (xlUp) .Row + 1). Диапазон (клетки (startRow, startCol), клетки (lastRow, lastCol)). Копирайте _ mtr.Range ("A" & mtr.Cells (Rows.Count, 1) .End (xlUp) .Row + 1)
Този цикъл работи за всички листове и копира данните от всеки лист в главен лист.
И накрая, в края на макроса активираме главния лист, за да видим изхода.
Така че да, момчета, ето как можете да обедините всеки лист в работна книга. Кажете ми, ако имате някакви запитвания относно този VBA код или някаква тема в Excel в секцията за коментари по -долу.
Свали файл:
Свързани статии:
Как да преминете през листове
как да получите последния ред и колона с помощта на vba
Изтриване на листове без подкани за потвърждение с помощта на VBA в Microsoft Excel
Добавяне и запазване на нова работна книга с помощта на VBA в Microsoft Excel 2016
Показване на съобщение в лентата за състоянието на Excel VBA
Изключете предупредителните съобщения с помощта на VBA в Microsoft Excel 2016
Популярни статии:
Функцията VLOOKUP в Excel
COUNTIF в Excel 2016
Как да използвате функцията SUMIF в Excel