Tabele przestawne w programie Excel odgrywają kluczową rolę w ułatwianiu zrozumienia i zrozumienia danych. Tabela przestawna może zagęszczać i łączyć dane w zrozumiałe struktury. Użytkownicy MS Excel szeroko przyjęli je w branży danych.

Czy wiesz, że możesz zautomatyzować swoje tabele przestawne w Excelu i tworzyć je jednym kliknięciem? MS Excel dobrze integruje się z VBA i stał się doskonałym narzędziem do automatyzacji powtarzalnych zadań.

Oto jak zautomatyzować tabelę przestawną za pomocą makra w MS Excel VBA.

Skorzystaj z praktycznego zestawu danych

Możesz pobrać i używać manekina zestaw danych z Tableau postępuj zgodnie ze skryptem VBA w tym przewodniku. Kod VBA będzie działał z każdym innym zestawem danych, z kilkoma podstawowymi poprawkami. Przed rozpoczęciem upewnij się, że masz włączone makra w skoroszycie programu Excel.

Istnieje kilka podstawowych kolumn, których można użyć w tabeli przestawnej. Aby zrozumieć niuanse tabeli i ostateczną strukturę, możesz ręcznie utworzyć podstawową tabelę przestawną z następującymi elementami:

instagram viewer
  • Filtr: Region
  • Wydziwianie: Podkategoria
  • Kolumny: Państwo
  • Wartości: Obroty

Końcowy oś powinna wyglądać następująco:

Możesz jednak pozwolić VBA zrobić to automatycznie, zamiast przygotowywać to ręcznie.

Jak automatycznie tworzyć tabele przestawne w programie Excel

Aby zautomatyzować tabele przestawne za pomocą języka VBA, otwórz nowy plik programu Excel i zmień nazwy arkuszy w następujący sposób:

  • Pierwszy arkusz: Makro
  • Drugi arkusz: Dane

The Makro arkusz zawiera makroskrypt, natomiast plik Dane arkusz zawiera Twoje dane. Na arkusz makra możesz wstawić dowolny kształt i przypisać do niego makro. Kliknij kształt prawym przyciskiem myszy i kliknij polecenie Przypisz makro.

W następnym oknie dialogowym kliknij nazwę swojego makra i kliknij OK. Ten krok przypisuje makro do kształtu.

1. Otwórz edytor kodowania Excel VBA

Naciskać Alt + F11 aby otworzyć edytor kodu. Gdy jesteś w edytorze kodu, kliknij prawym przyciskiem myszy nazwę pliku, a następnie Wstawić I Moduł. Należy pamiętać, że przed wykonaniem modułu należy napisać cały kod VBA w module.

Dobrą praktyką jest używanie nazwy modułu, która rezonuje z przeznaczeniem kodu. Ponieważ jest to wersja demonstracyjna, możesz zdefiniować nazwę modułu w następujący sposób:

sub pivot_demo()

Nazwa modułu kończy się na Napis końcowy, które jest końcowym poleceniem modułu:

Koniec Pod

2. Deklaruj zmienne

W module zacznij od zadeklarowania zmiennych do przechowywania wartości zdefiniowanych przez użytkownika, których użyjesz w skrypcie. Możesz użyć Ciemny instrukcja do deklarowania zmiennych w następujący sposób:

Przyciemnij arkusz P Jak Arkusz roboczy, DSheet Jak Karta pracy
Przyciemnij PvtCache Jak Pamięć podręczna przestawna
Przyciemniona tabela Pvt Jak Stół obrotowy
Przyciemniony zakres Pvt Jak Zakres
Przyciemnij Last_Row Jak Długi, Last_Col Jak Długi
ciemny sht1 Jak Wariant

Użyjesz tych zmiennych do następujących celów:

  • Arkusz: Arkusz docelowy, w którym VBA utworzy element przestawny.
  • Arkusz: Arkusz danych.
  • PvtCache: Pamięć podręczna przestawna przechowuje przestawną.
  • Tabela Pvt: Obiekt tabeli przestawnej.
  • Zakres Pvt: Zakres danych dla elementu przestawnego.
  • Ostatni_wiersz i ostatni_kolumna: Ostatni wypełniony wiersz i kolumna w arkuszu danych (DSheet).
  • Szt1: Ta zmienna jest wariantem.

3. Pomiń ostrzeżenia i komunikaty

Niepotrzebne błędy, ostrzeżenia i komunikaty spowalniają kody VBA. Ukrywając takie komunikaty, można znacznie przyspieszyć ten proces.

Użyj następującego kodu:

NA Błąd Wznów Dalej

Z Aplikacja
.DisplayAlerts = FAŁSZ
.ScreenUpdating = FAŁSZ
KoniecZ

Gdzie:

  • W przypadku błędu Wznów Dalej: Ta klauzula pomija wszelkie błędy w czasie wykonywania.
  • Aplikacja: Aplikacja dotyczy MS Excel.
  • Wyświetl alerty: Właściwość DisplayAlerts określa, czy mają być wyświetlane alerty.
  • Aktualizacja ekranu: Ta właściwość określa, czy aktualizować zmiany w czasie rzeczywistym, czy tylko po zakończeniu działania kodu.

Gdy ten kod zostanie uruchomiony, pomija wszelkie alerty, ostrzeżenia i komunikaty, które program Excel wyświetliłby w innym przypadku. Parametry DisplayAlerts i ScreenUpdating można wyłączyć, ustawiając ich wartości na FAŁSZ.

Pod koniec kodu możesz je ponownie włączyć, ustawiając wartość jako PRAWDA.

4. Usuń wszelkie istniejące arkusze przestawne

Aby utworzyć nową tabelę przestawną, masz dwie możliwości. Najpierw usuń istniejący arkusz przestawny i użyj VBA, aby utworzyć nowy arkusz do przechowywania przestawnego. Alternatywnie możesz użyć istniejącego arkusza roboczego do utrzymania osi obrotu.

W tym przewodniku utworzymy nowy arkusz przestawny do przechowywania tabeli przestawnej.

The dla każdego pętla przechodzi przez każdy arkusz w skoroszycie i zapisuje nazwę arkusza w pliku sztt1 zmienny. Możesz użyć dowolnej nazwy zmiennej (sht1) do przechowywania nazwy arkusza. Pętla przechodzi przez każdy arkusz w bieżącym skoroszycie, szukając arkusza o określonej nazwie (Sworzeń).

Gdy nazwa arkusza pasuje, usuwa arkusz i przechodzi do następnego arkusza. Gdy kod sprawdzi wszystkie arkusze, wychodzi z pętli i przechodzi do następnej części kodu, która dodaje nowy arkusz, Sworzeń.

Oto jak możesz to zrobić:

DlaKażdysztt1WAktywny skoroszyt.Arkusze
Jeśli sht1.Nazwa = "Sworzeń" Następnie
sztt1.Usuwać
KoniecJeśli
następny sztt1

Karty pracy. Dodać. Imię = "Sworzeń"

5. Zdefiniuj źródło danych i arkusze przestawne

Niezbędne jest utworzenie zmiennych do przechowywania odniesień do tabeli przestawnej i arkuszy danych. Działają one jako skróty, do których można się odwoływać w pozostałej części kodu.

Ustaw PSheet = Arkusze ("Sworzeń")
Ustaw DSheet = Arkusze ("Dane")

6. Zidentyfikuj ostatnio używany wiersz i kolumnę

Ta część kodu działa dynamicznie, ponieważ zmienia rozmiar ostatniego wypełnionego wiersza i kolumny w danych.

Last_Row = DArkusz. Komórki (wiersze. Policz, 1). Koniec (xlUp). Wiersz
Ostatni_kolumna = DArkusz. Komórki (1, Kolumny. Count).End (xlToLeft).Kolumna
Ustawić PvtRange = DSheet. Komórki(1, 1).Zmień rozmiar (ostatni_wiersz, ostatni_kolumna)

Gdzie:

  • Ostatni wiersz: Zmienna do przechowywania ostatniego wypełnionego numeru wiersza, tj. 9995
  • Ostatni_kolumna: Zmienna do przechowywania ostatniego wypełnionego numeru kolumny, czyli 21
  • Zakres Pvt: PvtRange odwołuje się do całego zakresu danych dla osi obrotu

7. Utwórz pamięć podręczną przestawną i tabelę przestawną

Pamięć podręczna przestawna przechowuje tabelę przestawną; dlatego przed utworzeniem tabeli przestawnej należy utworzyć pamięć podręczną. Aby utworzyć pamięć podręczną przestawną w arkuszu przestawnym, należy użyć odwołań do składni języka VBA.

Odwołując się do pamięci podręcznej przestawnej, musisz utworzyć tabelę przestawną. W ramach tabeli przestawnej można zdefiniować arkusz, odwołanie do komórki oraz nazwę tabeli przestawnej.

Ustaw PvtCache = ActiveWorkbook. Przestawne pamięci podręczne. Utwórz (SourceType:=xlDatabase, SourceData:=PvtRange).CreatePivotTable (TableDestination:=PSheet. Komórki (2, 2), NazwaTabeli:="MUODemoTable")
Ustaw PvtTable = PvtCache. CreatePivotTable (TableDestination:=PSheet. Komórki (1, 1), NazwaTabeli:="MUODemoTable")

Gdzie:

  • Aktywny skoroszyt: Bieżący skoroszyt, w którym znajduje się arkusz danych i przestawny.
  • Przestawne pamięci podręczne. Tworzyć: Domyślna składnia tworzenia pamięci podręcznej przestawnej.
  • Rodzaj źródła: Ponieważ masz dane w skoroszycie, możesz zdefiniować je jako xlBaza danych. Niektóre inne opcje obejmują xlKonsolidacja, xlZewnętrzny, Lub xlTabela przestawna.
  • Dane źródłowe: Możesz odwołać się do poprzedniego zakresu przestawnego jako danych źródłowych.
  • Utwórz tabelę przestawną: Domyślne polecenie do tworzenia tabeli przestawnej.
  • Miejsce docelowe tabeli: Musisz określić odwołania do arkuszy i komórek, w których chcesz utworzyć przestawne.
  • Nazwa tabeli: Określ nazwę tabeli przestawnej.
  • Utwórz tabelę przestawną: Domyślne polecenie tworzenia tabeli przestawnej w pamięci podręcznej przestawnej.

8. Wstaw wiersze, kolumny, filtry i wartości

Ponieważ tabela przestawna jest gotowa, musisz zacząć dodawać parametry w filtrach, wierszach, kolumnach i wartościach agregacji. Możesz użyć VBA pola obrotowe polecenie, aby rozpocząć deklarowanie szczegółów.

Aby dodać wartości filtrów:

Z ActiveSheetem. Tabele przestawne ("MUODemoTable").PivotFields("Region")
.Orientacja = xlPageField
KoniecZ

Aby dodać wartości wierszy:

Z ActiveSheetem. Tabele przestawne ("MUODemoTable").PivotFields("Podkategoria")
.Orientacja = xlRowField
KoniecZ

Aby dodać wartości kolumn:

Z ActiveSheetem. Tabele przestawne ("MUODemoTable").PivotFields("Państwo")
.Orientacja = xlColumnField
KoniecZ

Aby dodać wartości agregacji:

Z ActiveSheetem. Tabele przestawne ("MUODemoTable").PivotFields("Obroty")
.Orientacja = xlDataField
.Funkcjonować = xlSuma
KoniecZ

Należy pamiętać, że należy odwołać się do arkusza aktywnego (arkusza przestawnego), a następnie nazwy tabeli przestawnej i nazwy zmiennej. Kiedy musisz dodać filtry, wiersze i kolumny, możesz przełączać się między różnymi składniami, w tym:

  • xlPageField: Aby dodać filtry.
  • xlRowPole: Aby dodać wiersze.
  • xlRowPole: Aby dodać kolumny.

Wreszcie możesz użyć tzw xlDataField polecenie obliczenia agregacji wartości. Możesz użyć innych funkcji agregujących, takich jak xlSum, xlAverage, xlCount, xlMax, xlMin i xlProduct.

9. Uruchamianie kodu Excel VBA w celu tworzenia automatycznych punktów przestawnych

Wreszcie, gdy cały program jest gotowy, możesz go uruchomić, naciskając F5 lub klikając grać przycisk. Gdy wrócisz do arkusza przestawnego w skoroszycie, zobaczysz, że nowa tabela przestawna jest gotowa do przejrzenia.

Jeśli chcesz zobaczyć krok po kroku wykonanie polecenia kodu wiersz po wierszu, możesz przejść do edytora kodu i nacisnąć F8 kilka razy. W ten sposób możesz zobaczyć, jak działa każda linia kodu i jak VBA automatycznie tworzy twoje punkty przestawne.

Nauka automatycznego kodowania tabel przestawnych

Pivoty nie są ograniczone tylko do MS Excel. Języki programowania, takie jak Python, pozwalają tworzyć zoptymalizowane punkty przestawne za pomocą zaledwie kilku wierszy kodu.

Optymalizacja danych nie może być prostsza. Możesz skutecznie wybierać polecenia w Pythonie i z łatwością realizować podobną strukturę przestawną, jak w Excelu.