Nukopijuokite kiekvieno lapo langelio „CurrentRegion“ į vieną lapą naudodami „Microsoft Excel“ VBA

Anonim

Jei vienu metu tvarkote kelis lapus ir norite nukopijuoti kiekvieno lapo duomenis į pagrindinį darbalapį, turėtumėte perskaityti šį straipsnį. Mes naudosime VBA kodo dabartinio regiono ypatybę, kad konsoliduotume visų darbalapių duomenis į vieną lapą. Ši savybė naudinga daugeliui operacijų, kurios automatiškai išplečia pasirinkimą, kad apimtų visą dabartinį regioną, pvz., Automatinio formato metodą. Šios ypatybės negalima naudoti apsaugotame darbalapyje.

Sąlyga yra tokia: kiekvienas lapas turi būti panašaus formato, t. Y. Tiek pat stulpelių; naudodami tą patį formatą galime turėti tiksliai sujungtus duomenis.

Atkreipkite dėmesį: šis straipsnis parodys, kaip naudoti VBA kodą; jei dėl kokių nors priežasčių stulpelių skaičius viename lape skiriasi, tada visi sujungti duomenys nesuteiks tikslaus vaizdo. Labai rekomenduojama naudoti tą patį stulpelių skaičių. VBA kodas pridės naują lapą prie darbaknygės ir nukopijuos ir įklijuos duomenis po kiekvieno lapo, neperrašydamas.

Paimkime 3 lapų pavyzdį, būtent sausio, vasario ir kovo mėn. Toliau pateikiamos šių lapų momentinės nuotraukos:

Norėdami sujungti visų lapų duomenis į vieną lapą, norėdami paleisti VB redaktorių, turime atlikti šiuos veiksmus:

  • Spustelėkite skirtuką Kūrėjas
  • Iš kodų grupės pasirinkite „Visual Basic“

  • Nukopijuokite žemiau esantį kodą į standartinį modulį
Sub CopyCurrentRegion () Dim sh kaip darbalapis Dim DestSh kaip darbalapis Dim paskutinis tol, kol SheetExists ("Master") = tiesa Tada MsgBox "The sheet Master jau egzistuoja" Exit Sub End if Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh .Name = "Meistras" Kiekvienam šiam darbaknygėje. Darbo lapai Jei sh.Name DestSh.Name Tada Jei sh.UsedRange.Count> 1 Tada Last = LastRow (DestSh) sh.Range ("A1"). CurrentRegion.Copy DestSh. Ląstelės (paskutinis + 1, 1) pasibaigia, jei baigiasi, jei kita programa.ScreenUpdating = Tikroji pabaiga Sub Sub CopyCurrentRegionValues ​​() Dim sh kaip darbalapis Dim DestSh kaip darbalapis Dim paskutinis tiek laiko, jei SheetExists ("Master") = tiesa, tada MsgBox "Lapas Šablonas jau egzistuoja "Išeiti iš antrinio galo, jei Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name =" Master "Už kiekvieną sh šioje" ThisWorkbook.Worksheets "Jei sh.Name DestSh.Name Tada If sh.UsedRange.Count> 1 Tada Last = LastRow (DestSh) Su sh.Range ("A1"). CurrentRegion DestSh.Cells (Paskutinis + 1, 1). Pakeisti dydį (.Rows.Count, _ .Columns.Count) .Value = .Verta Pabaigti pabaiga Jei pabaiga Jei kita programa.ScreenUpdating = Tikroji pabaiga Subfunkcija LastRow (sh kaip darbalapis) On Error Resume Next LastRow = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False). ] Apie klaidą Tęsti toliau Lastcol = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns , _ SearchDirection: = xlPrevious, _ MatchCase: = False). Stulpelis dėl klaidos „GoTo 0“ pabaigos funkcijos funkcijų lapas SheetExists = CBool ​​(Len (Sheets (SName) .Name)) pabaigos funkcija 

„CopyCurrentRegion“ makrokomanda iškvies „SheetExists“ funkciją ir patikrins, ar yra darbalapio pavadinimas su „Master“; jei jis bus rastas, jis nieko nedarys, kitaip jis įterps naują darbalapį į aktyvią darbaknygę ir pervardys jį į „Master“ ir nukopijuos duomenis iš visų lapų.

Toliau pateikiamos konsoliduotų duomenų momentinės nuotraukos:

Pastaba: Darbo knygos pavyzdyje yra pagrindinis darbalapis; siūloma ištrinti pagrindinį darbalapį ir paleisti makrokomandą, kad pamatytumėte, kaip veikia VBA kodas.

Išvada:Dabar turime kodą, kuriuo galime perkelti duomenis iš kiekvieno darbalapio į vieną lapą.

Jei jums patiko mūsų tinklaraščiai, pasidalykite jais su draugais „Facebook“. Taip pat galite sekti mus „Twitter“ ir „Facebook“.

Mes norėtume išgirsti jūsų nuomonę, praneškite mums, kaip galime patobulinti, papildyti ar naujovinti savo darbą ir padaryti jį geresnį. Parašykite mums el