Skopírujte rozsah z každého listu do jedného listu pomocou jazyka VBA v programe Microsoft Excel

Anonim

V tomto článku vytvoríme makro na kopírovanie údajov zo všetkých hárkov v zošite na nový list.

Surové údaje pre tento príklad pozostávajú z podrobností o zamestnancoch z rôznych oddelení na rôznych listoch. Chceme konsolidovať podrobnosti o zamestnancoch do jedného listu.

Na konsolidáciu údajov sme vytvorili makro „CopyRangeFromMultipleSheets“. Toto makro je možné spustiť kliknutím na tlačidlo „Konsolidovať údaje“.

Makro vytvorí nový pracovný hárok a vloží konsolidované údaje zo všetkých pracovných hárkov.

Vysvetlenie kódu

'Opakovaním' všetkých hárkov skontrolujte, či existuje hárok "Master".

Pre každý zdroj v tejto pracovnej knihe. Pracovné listy

Ak Source.Name = "Master" Potom

MsgBox „Hlavný hárok už existuje“

Ukončiť sub

Koniec Ak

Ďalšie

Vyššie uvedený kód sa používa na kontrolu, či v zošite existuje hárok „Hlavný“. Ak v zošite existuje hárok „Master“, kód sa ukončí a zobrazí sa chybové hlásenie.

Source.Range ("A1"). SpecialCells (xlLastCell) .Row

Vyššie uvedený kód sa používa na získanie čísla riadku poslednej bunky v hárku.

Source.Range ("A1", Range ("A1"). SpecialCells (xlLastCell)). Copy Destination.Range ("A" & DestLastRow)

Vyššie uvedený kód sa používa na skopírovanie určeného rozsahu do definovanej bunky.

Pri kódovaní postupujte podľa nižšie uvedených pokynov

 Sub CopyRangeFromMultipleSheets () 'Deklarovanie premenných Dim Source ako pracovný list Dim Destination As Worksheet Dim SourceLastRow, DestLastRow As Long Application.ScreenUpdating = False' Looping through all sheets to check whether "Master" sheet exist for each source In ThisWorkbook.Worksheets If Source.Name = "Master" Potom MsgBox "Hlavný list už existuje" Ukončiť Sub End If Next 'Vkladanie nového hárka za "Hlavný" list Nastaviť cieľ = Pracovné listy.Pridať (po: = Listy ("Hlavné")) Cieľ.Name = " Master "'Opakovanie všetkých hárkov v zošite pre každý zdroj v tomto pracovnom zošite. Pracovné listy Zabránenie konsolidácii údajov z listu„ Main “a„ Master “Ak Source.Name„ Main “A Source.Name„ Master “Then SourceLastRow = Source .Range ("A1"). SpecialCells (xlLastCell) .Row Source.Activate If Source.UsedRange.Count> 1 Then DestLastRow = Sheets ("Master") Range ("A1"). SpecialCells (xlLastCell) .Row If DestLastRow = 1 Potom 'kopírovanie údajov zo zdrojového listu do cieľového listu Source.Range ("A 1 ", rozsah (" A1 "). SpecialCells (xlLastCell)). Kopírovať Destination.Range (" A "& DestLastRow) Else Source.Range (" A2 ", Range (" A1 "). SpecialCells (xlCellTypeLastCell)). Kopírovať Destination.Range ("A" & (DestLastRow + 1)) End if End If End If Next Destination.Activate Application.ScreenUpdating = True End Sub 

Ak sa vám tento blog páčil, zdieľajte ho so svojimi priateľmi na Facebooku. Môžete nás tiež sledovať na Twitteri a Facebooku.

Budeme radi, ak sa nám ozvete, dajte nám vedieť, ako môžeme zlepšiť našu prácu a zlepšiť ju pre vás. Napíšte nám na emailovú stránku