В тази статия ще създадем макрос за копиране на данни от всички листове в работната книга в нов лист.
Суровите данни за този пример се състоят от данни за служители от различни отдели в различни листове. Искаме да обединим данните на служителите в един лист.
Създадохме макрос „CopyRangeFromMultipleSheets“ за консолидиране на данните. Този макрос може да бъде стартиран, като щракнете върху бутона „Консолидиране на данни“.
Макросът ще създаде нов работен лист и ще вмъкне консолидираните данни от всички работни листове.
Обяснение на кода
„Преглеждане“ през всички листове, за да се провери дали съществува „Главен“ лист.
За всеки източник в тази работна книга, работни листове
Ако Source.Name = "Master" Тогава
MsgBox "Основен лист вече съществува"
Изход от Sub
Край Ако
Следващия
Горният код се използва за проверка дали в работната книга съществува лист „Основен“. Ако в работната книга съществува лист „Master“, тогава кодът излиза и се показва съобщение за грешка.
Source.Range ("A1"). SpecialCells (xlLastCell) .Row
Горният код се използва за получаване на номера на реда на последната клетка в листа.
Source.Range ("A1", Range ("A1"). SpecialCells (xlLastCell)). Copy Destination.Range ("A" & DestLastRow)
Горният код се използва за копиране на определения диапазон в определената клетка.
Моля, следвайте кода по -долу
Sub CopyRangeFromMultipleSheets () 'Деклариране на променливи Затъмняване на източника като работен лист Приглушаване на дестинация като работен лист Dim SourceLastRow, DestLastRow As Long Application.ScreenUpdating = False' Преглеждане на всички листове, за да се провери дали съществува "Master" лист за всеки източник в ThisWorkbook.Worksheets If Source.Name = "Master" Тогава MsgBox "Master sheet вече съществува" Exit Sub End If Next "Вмъкване на нов лист след листа" Main "Set Destination = Worksheets.Add (after: = Sheets (" Main ")) Destination.Name =" Master "" Преглеждане на всички листове в работната книга за всеки източник в тази работна книга. Работни листове "Предотвратяване на консолидацията на данни от" Main "и" Master "лист Ако Source.Name" Main "и Source.Name" Master "Тогава SourceLastRow = Source .Range ("A1"). SpecialCells (xlLastCell) .Row Source.Активирайте If Source.UsedRange.Count> 1 Тогава DestLastRow = Sheets ("Master"). Range ("A1"). SpecialCells (xlLastCell) .Row If DestLastRow = 1 След това „копиране на данни от изходния лист към целевия лист Source.Range („ A 1 ", Range (" A1 "). SpecialCells (xlLastCell)). Копиране на Destination.Range (" A "& DestLastRow) Друг източник.Range (" A2 ", Range (" A1 "). SpecialCells (xlCellTypeLastCell)). Копиране Destination.Range ("A" & (DestLastRow + 1)) End If End If End If Next Destination.Activate Application.ScreenUpdating = True End Sub
Ако този блог ви е харесал, споделете го с приятелите си във Facebook. Също така можете да ни следвате в Twitter и Facebook.
Ще се радваме да чуем от вас, уведомете ни как можем да подобрим работата си и да я направим по -добра за вас. Пишете ни на имейл сайта