Копирайте диапазон от всеки лист в един лист с помощта на VBA в Microsoft Excel

Anonim

В тази статия ще създадем макрос за копиране на данни от всички листове в работната книга в нов лист.

Суровите данни за този пример се състоят от данни за служители от различни отдели в различни листове. Искаме да обединим данните на служителите в един лист.

Създадохме макрос „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.

Ще се радваме да чуем от вас, уведомете ни как можем да подобрим работата си и да я направим по -добра за вас. Пишете ни на имейл сайта