„Excel“ suvestinės lentelės yra labai svarbios, kad duomenis būtų lengviau suprasti ir suprasti. Suvestinė lentelė gali sutrumpinti ir suskaidyti duomenis į reikšmingas struktūras. MS Excel vartotojai juos plačiai pritaikė duomenų pramonėje.

Ar žinojote, kad galite automatizuoti suvestines lenteles programoje „Excel“ ir sukurti jas vienu paspaudimu? MS Excel puikiai integruojasi su VBA ir tapo puikiu įrankiu automatizuoti pasikartojančias užduotis.

Štai kaip galite automatizuoti suvestinę lentelę naudodami makrokomandą MS Excel VBA.

Naudokite praktikos duomenų rinkinį

Galite atsisiųsti ir naudoti manekeną duomenų rinkinys iš Tableau vadovautis šiame vadove pateiktu VBA scenarijumi. VBA kodas veiks su bet kuriuo kitu duomenų rinkiniu su keliais pagrindiniais pakeitimais. Prieš pradėdami įsitikinkite, kad turite įgalintas makrokomandas „Excel“ darbaknygėje.

Suvestinėje lentelėje galite naudoti kelis esminius stulpelius. Norėdami suprasti lentelės niuansus ir galutinę struktūrą, galite rankiniu būdu sukurkite pagrindinę suvestinę lentelę su šiais elementais:

instagram viewer
  • Filtras: Regionas
  • Eilutės: Subkategorija
  • Stulpeliai: valstybė
  • Vertybės: Pardavimai

Galinis sukimasis turėtų atrodyti taip:

Tačiau galite leisti VBA tai padaryti automatiškai, o ne paruošti rankiniu būdu.

Kaip automatiškai sukurti „Pivot Tables“ programoje „Excel“.

Norėdami automatizuoti suvestines lenteles naudodami VBA, atidarykite naują „Excel“ failą ir pervardykite lapus taip:

  • Pirmas lapas: Makro
  • Antras lapas: Duomenys

The Makro lape yra makrokomandos scenarijus, o Duomenys lape yra jūsų duomenys. Makrokomandos lape galite įterpti bet kokią pasirinktą formą ir priskirti jai makrokomandą. Dešiniuoju pelės mygtuku spustelėkite figūrą ir spustelėkite Priskirti makrokomandą.

Kitame dialogo lange spustelėkite savo makrokomandos pavadinimą ir spustelėkite Gerai. Šis veiksmas priskiria makrokomandą figūrai.

1. Atidarykite Excel VBA kodavimo rengyklę

Paspauskite Alt + F11 norėdami atidaryti kodo rengyklę. Kai būsite kodo rengyklėje, dešiniuoju pelės mygtuku spustelėkite failo pavadinimą, tada spustelėkite Įdėti ir Modulis. Svarbu atsiminti, kad prieš vykdydami modulį turėsite parašyti visą VBA kodą.

Gera praktika yra naudoti modulio pavadinimą, atitinkantį kodo paskirtį. Kadangi tai yra demonstracinė versija, modulio pavadinimą galite apibrėžti taip:

sub pivot_demo()

Modulio pavadinimas baigiasi Pabaigos sub, kuri yra modulio pabaigos komanda:

Galas Sub

2. Deklaruoti kintamuosius

Modulio viduje pradėkite deklaruodami kintamuosius, kad išsaugotumėte kai kurias vartotojo nustatytas reikšmes, kurias naudosite scenarijuje. Galite naudoti Pritemdyti teiginys kintamiesiems deklaruoti taip:

Pritemdytas PSheet Kaip Darbalapis, DSheet Kaip Darbalapis
Pritemdyta PvtCache Kaip PivotCache
Dim PvtTable Kaip Suvestinės lentelės
Dim PvtRange Kaip diapazonas
Pritemdyti Paskutinė_eilė Kaip Ilgas, paskutinis_kol Kaip Ilgai
Dim sht1 kaip Variantas

Šiuos kintamuosius naudosite šiems tikslams:

  • PSlapas: Paskirties lapas, kuriame VBA sukurs sukimąsi.
  • DSlapas: Duomenų lapas.
  • PvtCache: Sukties talpykla saugo sukimosi funkciją.
  • PvtTable: Suvestinės lentelės objektas.
  • PvtRange: Suvesties duomenų diapazonas.
  • Paskutinė_eilė ir paskutinė_stulpelis: Paskutinė duomenų lapo eilutė ir stulpelis (DSheet).
  • Sht1: Šis kintamasis yra variantas.

3. Slopinkite įspėjimus ir pranešimus

Nereikalingos klaidos, įspėjimai ir pranešimai sulėtina jūsų VBA kodus. Slopindami tokius pranešimus galite žymiai pagreitinti procesą.

Naudokite šį kodą:

Įjungta Klaida Tęsti Kitas

Su Taikymas
.DisplayAlerts = Netiesa
.ScreenUpdating = Netiesa
GalasSu

Kur:

  • Įvykus klaidai, tęskite toliau: Ši sąlyga pašalina visas vykdymo klaidas.
  • Taikymas: Programa susijusi su MS Excel.
  • Display Alerts: Ypatybė DisplayAlerts apibrėžia, ar rodyti įspėjimus.
  • Ekrano atnaujinimas: Ši ypatybė apibrėžia, ar pakeitimus reikia atnaujinti realiuoju laiku, ar tik pasibaigus kodui.

Kai šis kodas veikia, jis slopina visus įspėjimus, įspėjimus ir pranešimus, kuriuos „Excel“ rodytų kitaip. Galite išjungti „DisplayAlerts“ ir „ScreenUpdating“ parametrus nustatydami jų reikšmes į Netiesa.

Kodo pabaigoje galite juos vėl įjungti, nustatydami reikšmę kaip Tiesa.

4. Ištrinkite visus esamus suvestinius lapus

Norėdami sukurti naują suvestinę lentelę, turite dvi parinktis. Pirmiausia ištrinkite esamą sukimosi lapą ir naudokite VBA, kad sukurtumėte naują lapą, kuriame būtų saugomas sukimasis. Arba galite naudoti esamą darbalapį, kad išlaikytumėte sukimąsi.

Šiame vadove sukurkime naują sukimosi lapą, kuriame bus saugoma suvestinė lentelė.

The kiekvienam kilpa cikliškai peržiūri kiekvieną darbaknygės lapą ir išsaugo lapo pavadinimą sht1 kintamasis. Galite naudoti bet kurį kintamojo pavadinimą (sht1), kad išlaikytumėte lapo pavadinimą. Ciklas pereina kiekvieną dabartinės darbaknygės lapą, ieškodamas konkrečiu pavadinimu (Pivot).

Kai lapo pavadinimas sutampa, jis ištrina lapą ir pereina į kitą lapą. Kai kodas patikrina visus lapus, jis išeina iš ciklo ir pereina į kitą kodo dalį, kuri prideda naują lapą, Pivot.

Štai kaip tai galite padaryti:

DėlKiekvienassht1ĮActiveWorkbook.Darbo lapeliai
Jei sht1.Vardas = "Pivot" Tada
sht1.Ištrinti
GalasJeigu
Kitas sht1

Darbo lapai. Papildyti. Vardas = "Pivot"

5. Apibrėžkite duomenų šaltinį ir „Pivot Sheets“.

Labai svarbu sukurti kintamuosius, kad būtų išsaugotos „Pivot“ ir „Data Sheets“ nuorodos. Jie veikia kaip spartieji klavišai, kuriuos galite nurodyti likusioje kodo dalyje.

Nustatyti PSheet = Darbalapiai ("Pivot")
Nustatyti DSheet = Darbalapiai("Duomenys")

6. Nustatykite paskutinę naudotą eilutę ir stulpelį

Ši kodo dalis veikia dinamiškai, nes padidina paskutinės duomenų eilutės ir stulpelio dydį.

Paskutinė_eilė = DSlapas. Ląstelės (eilutės. Skaičiavimas, 1).Pabaiga (xlUp).Eilutė
Last_Col = DSlapas. Ląstelės (1, stulpeliai. Skaičiavimas).Pabaiga (xlToLeft).Stulpelis
Nustatyti PvtRange = DSheet. Ląstelės (1, 1).Keisti dydį (paskutinė_eilė, paskutinė_stulpelis)

Kur:

  • Paskutinė_eilutė: Kintamasis, skirtas išsaugoti paskutinę užpildytą eilutės numerį, ty 9995
  • Last_Col: Kintamasis, skirtas išsaugoti paskutinio užpildyto stulpelio numerį, ty 21
  • PvtRange: „PvtRange“ nurodo visą sukimosi duomenų diapazoną

7. Sukurkite „Pivot Cache“ ir „Pivot Table“.

Sukamoji talpykla saugo sukamųjų lentelę; todėl prieš kurdami suvestinę lentelę turite sukurti talpyklą. Turite naudoti VBA sintaksės nuorodas, kad suvestinėje lape sukurtumėte sukimosi talpyklą.

Nurodydami suvestinės talpyklą, turite sukurti suvestinės lentelę. Kaip suvestinės lentelės dalį galite apibrėžti lapą, langelio nuorodą ir suvestinės lentelės pavadinimą.

Nustatyti PvtCache = ActiveWorkbook. PivotCaches. Sukurti (SourceType:=xlDatabase, SourceData:=PvtRange).CreatePivotTable (TableDestination:=PSheet. Langeliai (2, 2), lentelės pavadinimas:="MUODemoTable")
Nustatyti PvtTable = PvtCache. CreatePivotTable (TableDestination:=PSheet. Langeliai (1, 1), lentelės pavadinimas:="MUODemoTable")

Kur:

  • ActiveWorkbook: Dabartinė darbaknygė, kurioje yra duomenų ir suvestinės lapas.
  • PivotCaches. Sukurti: Numatytoji sintaksė, skirta suvesties talpyklai sukurti.
  • Šaltinio tipas: Kadangi darbaknygėje turite duomenų, galite juos apibrėžti kaip xl duomenų bazė. Kai kurios kitos parinktys apima xlKonsolidavimas, xlIšorinis, arba xlPivotTable.
  • Šaltinio duomenys: Kaip šaltinio duomenis galite nurodyti ankstesnį sukimosi diapazoną.
  • SukurtiPivotTable: Numatytoji komanda suvestines lentelei sukurti.
  • TableDestination: Turite nurodyti lapo ir langelių nuorodas, kuriose norite sukurti suvestinę.
  • Lentelės pavadinimas: Nurodykite suvestinės lentelės pavadinimą.
  • SukurtiPivotTable: Numatytoji komanda suvestinės lentelės sukūrimo talpykloje sukurti.

8. Įterpti eilutes, stulpelius, filtrus ir reikšmes

Kadangi suvestinė lentelė yra paruošta, turite pradėti pridėti parametrus į filtrus, eilutes, stulpelius ir agregavimo reikšmes. Galite naudoti VBA sukimosi laukai komandą, kad pradėtumėte deklaruoti detales.

Norėdami pridėti filtro reikšmes:

Su ActiveSheet. PivotTables("MUODemoTable").PivotFields("Regionas")
.Orientation = xlPageField
GalasSu

Norėdami pridėti eilučių vertes:

Su ActiveSheet. PivotTables("MUODemoTable").PivotFields("Subkategorija")
.Orientacija = xlRowField
GalasSu

Norėdami pridėti stulpelių reikšmes:

Su ActiveSheet. PivotTables("MUODemoTable").PivotFields("valstybė")
.Orientacija = xlColumnField
GalasSu

Norėdami pridėti agregavimo vertes:

Su ActiveSheet. PivotTables("MUODemoTable").PivotFields("Pardavimai")
.Orientation = xlDataField
.Funkcija = xlSum
GalasSu

Svarbu pažymėti, kad turite nurodyti aktyvųjį lapą (Pivot sheet), po kurio nurodomas suvestinės lentelės pavadinimas ir kintamojo pavadinimas. Kai reikia pridėti filtrą (-us), eilutę (-es) ir stulpelį (-ius), galite perjungti įvairią sintaksę, kurią sudaro:

  • xlPageField: Norėdami pridėti filtrų.
  • xlRowField: Norėdami pridėti eilučių.
  • xlRowField: Norėdami pridėti stulpelių.

Galiausiai galite naudoti xlDataField komandą reikšmių suvestiniams apskaičiuoti. Galite naudoti kitas suvestines funkcijas, pvz., xlSum, xlAverage, xlCount, xlMax, xlMin ir xlProduct.

9. Vykdykite „Excel“ VBA kodą, kad sukurtumėte automatinius sukinius

Galiausiai, kai visa programa bus paruošta, galite ją paleisti paspausdami F5 arba spustelėdami žaisti mygtuką. Kai grįšite į darbaknygės suvestinės lapą, pamatysite, kad nauja suvestinė lentelė yra paruošta peržiūrėti.

Jei norite pamatyti nuoseklų kodo komandos vykdymą eilutę po eilutės, galite pereiti į kodo rengyklę ir paspausti F8 kelis kartus. Tokiu būdu galite pamatyti, kaip veikia kiekviena kodo eilutė ir kaip VBA automatiškai sukuria jūsų sukinius.

Išmokti koduoti Pivot lenteles automatiškai

„Pivots“ neapsiriboja tik „MS Excel“. Programavimo kalbos, pvz., Python, leidžia sukurti optimizuotus sukinius naudojant tik kelias kodo eilutes.

Duomenų optimizavimas negali būti lengvesnis. Galite efektyviai pasirinkti ir pasirinkti savo komandas Python ir lengvai atlikti panašią „Excel“ sukimosi struktūrą.