Przewodnik VBA po tabelach przestawnych

Ten samouczek pokaże, jak pracować z tabelami przestawnymi przy użyciu języka VBA.

Tabele przestawne to narzędzia do podsumowywania danych, których można używać do wyciągania kluczowych wniosków i podsumowań na podstawie danych. Spójrzmy na przykład: mamy zbiór danych źródłowych w komórkach A1:D21 zawierający szczegóły sprzedanych produktów, pokazane poniżej:

Używanie GetPivotData do uzyskania wartości

Załóżmy, że masz tabelę przestawną o nazwie Tabela przestawna1 ze sprzedażą w polu Wartości/dane, Produkt jako pole Wiersze i Region jako pole Kolumny. Za pomocą metody PivotTable.GetPivotData można zwracać wartości z tabel przestawnych.

Poniższy kod zwróci 1130,00 USD (całkowita sprzedaż w regionie Wschód) z tabeli przestawnej:

1 MsgBox ActiveCell.PivotTable.GetPivotData("Sprzedaż", "Region", "Wschód")

W tym przypadku Sprzedaż to „Pole danych”, „Pole1” to Region, a „Pozycja1” to Wschód.

Poniższy kod zwróci 980 USD (całkowita sprzedaż produktu ABC w regionie północnym) z tabeli przestawnej:

1 MsgBox ActiveCell.PivotTable.GetPivotData("Sprzedaż", "Produkt", "ABC", "Region", "Północ")

W tym przypadku Sprzedaż to „Pole Danych”, „Pole1” to Produkt, „Pozycja1” to ABC, „Pole2” to Region, a „Pozycja2” to Północ.

Możesz również dołączyć więcej niż 2 pola.

Składnia GetPivotData to:

Pobierz dane przestawne (Pole danych, Pole1, Przedmiot 1, Pole2, Pozycja2… ) gdzie:

Parametr Opis
Pole danych Pole danych, takie jak sprzedaż, ilość itp., które zawiera liczby.
Pole 1 Nazwa pola kolumny lub wiersza w tabeli.
Przedmiot 1 Nazwa towaru w polu 1 (opcjonalnie).
Pole 2 Nazwa pola kolumny lub wiersza w tabeli (opcjonalnie).
Pozycja 2 Nazwa towaru w polu 2 (opcjonalnie).

Tworzenie tabeli przestawnej na arkuszu

Aby utworzyć tabelę przestawną na podstawie powyższego zakresu danych, w komórce J2 w arkuszu Arkusz1 aktywnego skoroszytu, użyjemy następującego kodu:

1234567891011 Arkusze("Arkusz1").Komórki(1,1).WybierzActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _„Arkusz1!R1C1:R21C4”, Wersja:=xlWersja tabeli przestawnej15). Utwórz tabelę przestawną _TableDestination:="Arkusz1!R2C10", NazwaTabeli:="Tabela Przestawna1", Domyślna Wersja _:=xlWersja tabeli przestawnej15Arkusze("Arkusz1").Wybierz

Wynik to:

Tworzenie tabeli przestawnej na nowym arkuszu

Aby utworzyć tabelę przestawną na podstawie powyższego zakresu danych, w nowym arkuszu aktywnego skoroszytu, użyjemy następującego kodu:

12345678910111213 Arkusze("Arkusz1").Komórki(1,1).WybierzArkusze.DodajActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _„Arkusz1!R1C1:R21C4”, Wersja:=xlWersja tabeli przestawnej15). Utwórz tabelę przestawną _TableDestination:="Arkusz2!R3C1", NazwaTabeli:="Tabela Przestawna1", Domyślna Wersja _:=xlWersja tabeli przestawnej15Arkusze("Arkusz2").Wybierz

Dodawanie pól do tabeli przestawnej

Możesz dodać pola do nowo utworzonej tabeli przestawnej o nazwie Tabela przestawna1 na podstawie powyższego zakresu danych. Uwaga: Arkusz zawierający tabelę przestawną musi być arkuszem aktywnym.

Aby dodać produkt do pola wierszy, użyj następującego kodu:

123 ActiveSheet.PivotTables("PivotTable1").PivotFields("Produkt").Orientation = xlRowFieldActiveSheet.PivotTables("Tabela przestawna1").PivotFields("Produkt").Pozycja = 1

Aby dodać region do pola kolumny, użyj następującego kodu:

123 ActiveSheet.PivotTables("PivotTable1").PivotFields("Region").Orientation = xlColumnFieldActiveSheet.PivotTables("PivotTable1").PivotFields("Region").Position = 1

Aby dodać sprzedaż do sekcji wartości w formacie liczbowym waluty, użyj następującego kodu:

123456789 ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _"PivotTable1").PivotFields("Sprzedaż"), "Suma sprzedaży", xlSumZ ActiveSheet.PivotTables("PivotTable1").PivotFields("Suma sprzedaży").NumberFormat = "$#,##0.00"Kończyć z

Wynik to:

Zmiana układu raportu tabeli przestawnej

Możesz zmienić układ raportu swojej tabeli przestawnej. Poniższy kod zmieni układ raportu tabeli przestawnej na formularz tabelaryczny:

1 ActiveSheet.PivotTables("PivotTable1").TableStyle2 = "PivotStyleLight18"

Usuwanie tabeli przestawnej

Możesz usunąć tabelę przestawną za pomocą VBA. Poniższy kod spowoduje usunięcie tabeli przestawnej o nazwie Tabela przestawna1 w aktywnym arkuszu:

12 ActiveSheet.PivotTables("PivotTable1").PivotSelect "", xlDataAndLabel, TrueWybór.WyczyśćZawartość

Sformatuj wszystkie tabele przestawne w skoroszycie

Wszystkie tabele przestawne w skoroszycie można sformatować za pomocą języka VBA. Poniższy kod wykorzystuje strukturę pętli w celu przechodzenia przez wszystkie arkusze skoroszytu i usuwania wszystkich tabel przestawnych w skoroszycie:

12345678910111213 Formatowanie podrzędne Wszystkie tabele przestawne w skoroszycie()Dim wks jako arkusz roboczyDim wb jako skoroszytUstaw wb = Aktywny skoroszytDim pt As Pivot TableDla każdego tygodnia W wb.SheetsDla każdego pt w wks.Tabele przestawnept.TableStyle2 = "PivotStyleLight15"Następny pktNastępny tydzieńNapis końcowy

Aby dowiedzieć się więcej o tym, jak korzystać z pętli w VBA, kliknij tutaj.

Usuwanie pól tabeli przestawnej

Pola w tabeli przestawnej można usuwać za pomocą języka VBA. Poniższy kod spowoduje usunięcie pola Produkt w sekcji Wiersze z tabeli przestawnej o nazwie Tabela przestawna1 w aktywnym arkuszu:

12 ActiveSheet.PivotTables("PivotTable1").PivotFields("Produkt").Orientation = _xlUkryty

Tworzenie filtra

Tabela przestawna o nazwie Tabela przestawna1 została utworzona z produktem w sekcji wiersze i sprzedażą w sekcji wartości. Możesz także utworzyć filtr dla swojej tabeli przestawnej za pomocą VBA. Poniższy kod utworzy filtr oparty na Regionie w sekcji Filtry:

123 ActiveSheet.PivotTables("PivotTable1").PivotFields("Region").Orientation = xlPageFieldActiveSheet.PivotTables("PivotTable1").PivotFields("Region").Position = 1

Aby filtrować tabelę przestawną na podstawie pojedynczego elementu raportu, w tym przypadku regionu wschodniego, użyj następującego kodu:

12345 ActiveSheet.PivotTables("Tabela przestawna1").PivotFields("Region").ClearAllFiltersActiveSheet.PivotTables("PivotTable1").PivotFields("Region").CurrentPage = _"Wschód"

Załóżmy, że chcesz filtrować tabelę przestawną na podstawie wielu regionów, w tym przypadku wschodniego i północnego, użyj następującego kodu:

1234567891011121314 ActiveSheet.PivotTables("PivotTable1").PivotFields("Region").Orientation = xlPageFieldActiveSheet.PivotTables("PivotTable1").PivotFields("Region").Position = 1ActiveSheet.PivotTables("Tabela przestawna1").PivotFields("Region"). _EnableMultiplePageItems = TrueZ ActiveSheet.PivotTables("PivotTable1").PivotFields("Region").PivotItems("Południe").Visible = Fałsz.PivotItems("Zachód").Visible = FalseKończyć z

Odświeżanie tabeli przestawnej

Możesz odświeżyć swoją tabelę przestawną w VBA. Aby odświeżyć konkretną tabelę o nazwie PivotTable1 w VBA, użyjesz następującego kodu:

1 ActiveSheet.PivotTables("Tabela przestawna1").PivotCache.Refresh
wave wave wave wave wave