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

Anonim

Jei norite nukopijuoti naudojamą kiekvieno darbalapio diapazoną į pagrindinį lapą, turėtumėte perskaityti šį straipsnį. Mes naudosime VBA kodą, norėdami nukopijuoti duomenis iš kiekvieno darbalapio ir įklijuoti į kitą lapą, neperrašydami.

Makrokomanda pridės lapą su pavadinimu „Master“ į jūsų darbo knygą ir nukopijuos langelius iš kiekvieno šio darbalapio darbaknygės lapo.

Pirmoji makrokomanda kopijuoja įprastai, o antroji - kopijuoja reikšmes. Makrokomandos naudoja toliau nurodytas funkcijas; makrokomandos neveiks be funkcijų.

Toliau pateikiama „Sheet1“ ir „Sheet2“ duomenų momentinė nuotrauka:

Norėdami paleisti VB redaktorių, turime atlikti šiuos veiksmus:

  • Spustelėkite skirtuką Kūrėjas
  • Kodo grupėje pasirinkite „Visual Basic“

  • Nukopijuokite žemiau esantį kodą į standartinį modulį
Sub CopyUsedRange () Dim sh kaip darbalapis Dim DestSh kaip darbalapis Dim paskutinis tiek laiko, jei SheetExists ("Master") = True Tada MsgBox "The sheet Master jau egzistuoja" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh .Name = "Meistras" Kiekvienam šios darbo knygoje esančiam šui. Darbo lapai Jei sh.Name DestSh.Name Tada Jei sh.UsedRange.Count> 1 Tada Last = LastRow (DestSh) sh.UsedRange.Copy DestSh.Cells (Paskutinis + 1, 1 ) Pabaiga Jei pabaiga Jei kita programa.ScreenUpdating = Tikroji pabaiga Sub Sub CopyUsedRangeValues ​​() Dim sh kaip darbalapis Dim DestSh kaip darbalapis Dim paskutinis tol, kol SheetExists ("Master") = True Tada MsgBox "The sheet Master jau egzistuoja" Exit Sub End If Application.ScreenUpdating = False Set DestSh = Worksheets.Add DestSh.Name = "Master" Už kiekvieną sh šioje "Darbo knygoje". sh.UsedRange DestSh.Cells (Paskutinis + 1, 1). Keisti dydį (.Rows.Count, _ .Columns.Count) .Value = .Value End End with End If End If Next Ap plication.ScreenUpdating = Tikrosios pabaigos subfunkcija LastRow (sh kaip darbalapis) Dėl klaidos Tęsti kitą LastRow = sh.Cells.Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByRows, _ SearchDirection: = xlPrevious, _ MatchCase: = False). Row On Error GoTo 0 End Function Funkcija Lastcol (sh As Workheet) On Error Resume Next Lastcol = sh.Cells .Find (What: = "*", _ After: = sh.Range ("A1"), _ Lookat: = xlPart, _ LookIn: = xlFormulas, _ SearchOrder: = xlByColumns, _ SearchDirection: = xlPrevious, _ MatchCase: = Klaidinga). Stulpelis apie klaidą GoTo 0 Pabaigos funkcijos funkcijų lapas .Pavadinimas)) Pabaigos funkcija 

Dabar makrokomandos kodas nustatytas; paleisime makrokomandą „CopyUsedRange“ ir įterpsite naują „Master“ lapą bei nukopijuosite duomenis iš kiekvieno lapo.

Išvada:Duomenų kopijavimas iš kelių lapų yra rankinė užduotis; tačiau; naudodami aukščiau pateiktą kodą, galime konsoliduoti duomenis vienu makrokomandos paspaudimu.

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