Копирайте диапазон с повече области в определен лист, използвайки VBA в Microsoft Excel

Anonim

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

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

Щракването върху бутона „Копиране на запис“ ще направи обединението на данни от двете области, заедно с форматирането.

Щракването върху бутона „Копиране само на стойност“ също ще направи обединението на данни от двете области, но без да копирате формата на клетката.

Обяснение на кода

За всеки малък лист в листове ("Основен"). Обхват ("A9: B13, D16: E20"). Области

Следващ Smallrng

Горният цикъл за всеки се използва за циклиране на определени области.

Задайте DestRange = Sheets ("Destination"). Range ("A" & LastRow)

Горният код се използва за създаване на обект на диапазон от последната клетка, където искаме да копираме данните.

Smallrng.Copy DestRange

Горният код се използва за копиране на данни до посочената дестинация.

Моля, следвайте кода по -долу

 Опция Изрично подкопиранеMultiArea () 'Деклариране на променливи Dim DestRange като обхват Dim Smallrng като диапазон Dim LastRow As Long' Обръщане през определени области за всеки Smallrng в листове ("Main"). Range ("A9: B13, D16: E20"). Области 'Намиране на номера на ред на последната клетка LastRow = Sheets ("Destination"). Range ("A1"). SpecialCells (xlLastCell) .Row + 1' Избиране на клетката, в която трябва да се копират записи If LastRow = 2 Тогава задайте DestRange = Sheets ("Destination"). Range ("A" & LastRow - 1) Else Set DestRange = Sheets ("Destination"). Range ("A" & LastRow) End If 'Копиране на записи в определен целеви диапазон Smallrng.Copy DestRange Следващ Smallrng End Sub Sub CopyMultiAreaValues ​​() 'Деклариране на променливи Dim DestRange As Range Dim Smallrng As Range Dim LastRow As Long' Циклично преминаване през определени области за всеки Smallrng в листове ("Main"). Range ("A9: B13, D16: E20" ) .Areas 'Намиране на номера на ред на последната клетка LastRow = Sheets ("Destination"). Range ("A1"). SpecialCells (xlLastCell) .Row + 1 With Smallrng' Избиране на клетката, където отново кабелите трябва да бъдат копирани Ако LastRow = 2 След това задайте DestRange = Sheets ("Destination"). Range ("A" & LastRow - 1) .Resize (.Rows.Count, .Columns.Count) Else Set DestRange = Sheets (" Destination "). Range (" A "& LastRow) .Resize (.Rows.Count, .Columns.Count) End If End With 'Присвояване на стойностите от източника към местоназначението DestRange.Value = Smallrng.Value Следващ Smallrng End Sub 

Ако този блог ви е харесал, споделете го с приятелите си във Facebook. Също така можете да ни следвате в Twitter и Facebook.

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