Заокретне табеле у Екцел-у су кључне у олакшавању разумевања и разумевања података. Заокретна табела може да кондензује и збије податке у смислене структуре. Корисници МС Екцел-а су их широко усвојили у индустрији података.

Да ли сте знали да можете аутоматизовати своје изведене табеле у Екцел-у и креирати их једним кликом? МС Екцел се добро интегрише са ВБА и постао је одличан алат за аутоматизацију задатака који се понављају.

Ево како можете да аутоматизујете заокретну табелу помоћу макроа у МС Екцел ВБА.

Користите скуп података о пракси

Можете преузети и користити лутку скуп података из Таблеау-а да пратите ВБА скрипту у овом водичу. ВБА код ће радити са било којим другим скупом података, уз неколико основних подешавања. Пре него што почнете, уверите се да имате омогућени макрои у вашој Екцел радној свесци.

Постоји неколико основних колона које можете да користите у оквиру стожерне табеле. Да бисте разумели нијансе табеле и коначну структуру, можете креирајте основну стожерну табелу ручно са следећим елементима:

instagram viewer
  • Филтер: Регион
  • редови: Подкатегорија
  • Колоне: Држава
  • вредности: Продаја

Крајњи стожер би требало да изгледа овако:

Међутим, можете пустити ВБА да то уради аутоматски уместо да га припрема ручно.

Како аутоматски креирати заокретне табеле у Екцелу

Да бисте аутоматизовали своје изведене табеле помоћу ВБА, отворите нову Екцел датотеку и преименујте листове на следећи начин:

  • Први лист: Макро
  • Други лист: Подаци

Тхе Макро лист садржи макро скрипту, док је Подаци лист садржи ваше податке. На листу макроа можете уметнути било који облик по свом избору и доделити му макро. Кликните десним тастером миша на облик и кликните на Додели макро.

У следећем дијалогу кликните на име вашег макроа и кликните на Ок. Овај корак додељује макро облику.

1. Отворите Екцел ВБА уређивач кодирања

Притисните Алт + Ф11 да отворите уређивач кода. Када сте у уређивачу кода, кликните десним тастером миша на име датотеке, а затим на Уметните и Модул. Важно је запамтити да ћете написати сав ВБА код унутар модула пре него што га извршите.

Добра је пракса да користите назив модула који одговара сврси кода. Пошто је ово демо, назив модула можете дефинисати на следећи начин:

суб пивот_демо()

Назив модула се завршава са Енд Суб, што је завршна команда модула:

Крај Суб

2. Декларишите променљиве

Унутар модула, почните тако што ћете прогласити променљиве за чување неких кориснички дефинисаних вредности које ћете користити у скрипти. Можете користити Замутити изјава за декларисање променљивих, као што следи:

Дим ПСхеет Као Радни лист, ДСхеет Као Радни лист
Дим ПвтЦацхе Као ПивотЦацхе
Дим ПвтТабле Као Ротациона табела
Дим ПвтРанге Као Домет
Дим Ласт_Ров Као Лонг, Ласт_Цол Као Дуго
Дим схт1 као Варијанта

Ове променљиве ћете користити за следеће:

  • ПСхеет: Одредишни лист, где ће ВБА креирати стожер.
  • ДСхеет: Лист са подацима.
  • ПвтЦацхе: Пивот кеш држи пивот.
  • ПвтТабле: Објекат заокретне табеле.
  • ПвтРанге: Опсег података за стожер.
  • Ласт_Ров и Ласт_Цол: Последњи попуњени ред и колона унутар листа са подацима (ДСхеет).
  • Схт1: Ова варијабла је варијанта.

3. Потисните упозорења и поруке

Непотребне грешке, упозорења и поруке успоравају ваше ВБА кодове. Потискивањем таквих порука можете знатно убрзати процес.

Користите следећи код:

на Грешка Настави Следећи

Витх Апликација
.ДисплаиАлертс = Фалсе
.СцреенУпдатинг = Фалсе
КрајВитх

Где:

  • При грешци настави даље: Ова клаузула потискује све грешке током извођења.
  • Апликација: Апликација се односи на МС Екцел.
  • Дисплаи Алертс: Својство ДисплаиАлертс дефинише да ли да се приказују упозорења.
  • Ажурирање екрана: Ово својство дефинише да ли се промене ажурирају у реалном времену или тек када се код заврши са радом.

Када се овај код покрене, потискује сва упозорења, упозорења и поруке које би Екцел приказивао у супротном. Можете да искључите ДисплаиАлертс и СцреенУпдатинг параметре тако што ћете поставити њихове вредности на Фалсе.

Пред крај кода, можете их поново укључити тако што ћете поставити вредност као Истина.

4. Избришите све постојеће заокретне листове

Да бисте креирали нову изведену табелу, имате две опције. Прво, избришите постојећи стожерни лист и користите ВБА да бисте креирали нови лист за складиштење стожера. Алтернативно, можете користити постојећи радни лист да држите стожер.

У овом водичу, хајде да направимо нови стожерни лист за складиштење изведене табеле.

Тхе за сваки петља кружи кроз сваки лист у радној свесци и складишти назив листа у оквиру схт1 променљива. Можете користити било које име променљиве (схт1) да задржите име листа. Петља се креће кроз сваки лист у тренутној радној свесци, тражећи један са одређеним именом (Пивот).

Када се назив листа подудара, брише лист и прелази на следећи лист. Када код провери све листове, излази из петље и прелази на следећи део кода, који додаје нови лист, Пивот.

Ево како то можете да урадите:

ЗаСвакисхт1УАцтивеВоркбоок.Радни листови
Ако схт1.Наме = "Пивот" Онда
схт1.Делете
КрајАко
Следећи схт1

Радни листови. Додати. Име = "Пивот"

5. Дефинишите извор података и заокретне листове

Неопходно је креирати варијабле за чување референци за пивот и листове са подацима. Оне функционишу као пречице, које можете референцирати у остатку кода.

Поставите ПСхеет = Радни листови("Пивот")
Поставите ДСхеет = Радни листови("Подаци")

6. Идентификујте последњи коришћени ред и колону

Овај део кода ради динамички, јер повећава величину последњег попуњеног реда и колоне у подацима.

Последњи_ред = ДСхеет. Ћелије (редови. Цоунт, 1).Енд (клУп).Ров
Ласт_Цол = ДСхеет. Ћелије (1, колоне. Цоунт).Енд (клТоЛефт).Цолумн
Комплет ПвтРанге = ДСхеет. ћелије(1, 1).Промени величину (последњи_ред, последњи_кол)

Где:

  • Последњи_ред: Променљива за чување последњег попуњеног броја реда, тј. 9995
  • Ласт_Цол: Променљива за чување последњег попуњеног броја колоне, тј. 21
  • ПвтРанге: ПвтРанге упућује на цео опсег података за пивот

7. Креирајте заокретну кеш меморију и заокретну табелу

Пивот кеш садржи стожерну табелу; стога, морате да креирате кеш пре него што креирате заокретну табелу. Морате да користите референце ВБА синтаксе да бисте направили стожерну кеш меморију унутар Пивот листа.

Позивајући се на пивот кеш, потребно је да креирате изведену табелу. Као део изведене табеле, можете дефинисати лист, референцу ћелије и име заокретне табеле.

Поставите ПвтЦацхе = АцтивеВоркбоок. ПивотЦацхес. Креирајте (СоурцеТипе:=клДатабасе, СоурцеДата:=ПвтРанге).ЦреатеПивотТабле (ТаблеДестинатион:=ПСхеет. Ћелије (2, 2), ТаблеНаме:="МУОДемоТабле")
Поставите ПвтТабле = ПвтЦацхе. ЦреатеПивотТабле (ТаблеДестинатион:=ПСхеет. Ћелије (1, 1), ТаблеНаме:="МУОДемоТабле")

Где:

  • АцтивеВоркбоок: Тренутна радна свеска у којој имате Дата и Пивот лист.
  • ПивотЦацхес. Креирај: Подразумевана синтакса за креирање пивот кеша.
  • Извор Тип: Пошто имате податке у радној свесци, можете их дефинисати као клДатабасе. Неке друге опције укључују клЦонсолидатион, клЕктернал, или клПивотТабле.
  • Изворни подаци: Можете референцирати претходни опсег обртања као изворне податке.
  • Креирај заокретну табелу: Подразумевана команда за креирање пивот табеле.
  • ТаблеДестинатион: Морате да наведете референце листа и ћелије где желите да креирате стожер.
  • ТаблеНаме: Одредите назив заокретне табеле.
  • Креирај заокретну табелу: Подразумевана команда за креирање изведене табеле у оквиру кеша.

8. Убаци редове, колоне, филтере и вредности

Пошто је стожерна табела спремна, потребно је да почнете да додајете параметре унутар филтера, редова, колона и вредности агрегације. Можете користити ВБА пивотфиелдс команду за почетак декларисања детаља.

Да бисте додали вредности филтера:

Са АцтивеСхеет-ом. изведене табеле("МУОДемоТабле").ПивотФиелдс("Регион")
.Ориентатион = клПагеФиелд
КрајВитх

Да бисте додали вредности редова:

Са АцтивеСхеет-ом. изведене табеле("МУОДемоТабле").ПивотФиелдс("Подкатегорија")
.Ориентатион = клРовФиелд
КрајВитх

Да бисте додали вредности колоне:

Са АцтивеСхеет-ом. изведене табеле("МУОДемоТабле").ПивотФиелдс("Држава")
.Ориентатион = клЦолумнФиелд
КрајВитх

Да бисте додали агрегационе вредности:

Са АцтивеСхеет-ом. изведене табеле("МУОДемоТабле").ПивотФиелдс("Продаја")
.Ориентатион = клДатаФиелд
.Функција = клСум
КрајВитх

Неопходно је напоменути да морате референцирати активни лист (окретни лист), након чега следи назив заокретне табеле и име променљиве. Када треба да додате филтер(е), ред(ове) и колону(е), можете да се пребацујете између различите синтаксе, која укључује следеће:

  • клПагеФиелд: Да бисте додали филтере.
  • клРовФиелд: Да бисте додали редове.
  • клРовФиелд: Да бисте додали колоне.

Коначно, можете користити клДатаФиелд команду за израчунавање агрегације вредности. Можете користити друге агрегатне функције као што су клСум, клАвераге, клЦоунт, клМак, клМин и клПродуцт.

9. Покретање Екцел ВБА кода за креирање аутоматских окрета

Коначно, када је цео програм спреман, можете га покренути притиском на Ф5 или кликом на игра дугме. Када се вратите на заокретни лист у радној свесци, видећете да је нова заокретна табела спремна за преглед.

Ако желите да видите извршавање корак по корак како се команда кода приказује ред по ред, можете да се крећете до уређивача кода и притиснете Ф8 неколико пута. На овај начин можете видети како свака линија кода функционише и како ВБА аутоматски креира ваше пивотове.

Учење аутоматског кодирања заокретних табела

Пивотови нису ограничени само на МС Екцел. Програмски језици као што је Питхон омогућавају вам да креирате оптимизоване пивотове са само неколико линија кода.

Оптимизација података не може бити лакша од овога. Можете ефикасно да бирате своје команде у Питхон-у и са лакоћом остварите сличну структуру налик Екцел-у.