Excel: Filter Pivot Table dari Sheet Lain / Duplikat Filter Di Seluruh Lembar

0

Saya bekerja dengan Excel untuk Mac 2011.

Saya memiliki beberapa tabel pivot berbeda yang masing-masing mengatur data untuk grafik pada lembar ringkasan. Setiap tabel pivot harus difilter dengan cara yang sama.

Pertanyaan:

(1) Apakah ada cara untuk memindahkan / menduplikasi / menautkan filter ini sehingga ketika salah satu mengubah yang lain juga berubah? (VBA berfungsi untuk pilihan tunggal sekarang, tetapi bagaimana dengan pilihan ganda?)

(2) Apakah ada cara untuk membuat filter tunggal universal pada halaman ringkasan utama?


EDIT: Pada dasarnya, saya ingin meniru SLICER di Excel untuk Mac. Ada ide?

Andrew
sumber

Jawaban:

1

Menggunakan beberapa contoh yang saya temukan online, saya menulis VBA berikut yang memenuhi apa yang saya butuhkan. Saya menempatkan tabel pivot kosong di halaman ringkasan saya, dan sebuah tombol yang terhubung dengan makro ini yang memperbarui semua tabel pivot lainnya dengan filter yang sama.


PENOLAKAN: Ini tidak akan berfungsi untuk bidang yang memiliki "(Semua)" Dipilih. Itu tidak perlu bagi saya untuk melihat ke dalam, tetapi mungkin untuk mengubah kode berikut untuk memasukkan dukungan "(Semua)".


Sub UpdateAllPivotTables()
Dim ws As Worksheet
Dim wsMain As Worksheet
Dim ptMain As PivotTable
Dim pt As PivotTable
Dim pfMain As PivotField
Dim piMain As PivotItem
Dim pi As PivotItem
Dim pf As PivotField
Dim hadError As Boolean


On Error Resume Next
Set wsMain = ActiveSheet
Set ptMain = ActiveSheet.PivotTables(1)

Application.EnableEvents = False


For Each ws In ThisWorkbook.Worksheets
        If (Not (ws.Name = wsMain.Name)) Then
            ws.Unprotect
            For Each pt In ws.PivotTables
                    pt.ManualUpdate = True
                    For Each pf In pt.PageFields
                            For Each pi In pf.PivotItems
                                If (Not (pi.Visible = ptMain.PageFields(pf.Name).PivotItems(pi.Name).Visible)) Then
                                    pi.Visible = ptMain.PageFields(pf.Name).PivotItems(pi.Name).Visible
                                End If
                            Next pi
                    Next pf
                    pt.ManualUpdate = False
            Next pt
            'ws.Protect
        End If
Next ws
Application.EnableEvents = True

End Sub
Andrew
sumber