Zbigniew K.

Zbigniew K. Researcher, Jato
Dynamics Ltd.

Temat: Jeden filtr dla wielu tabel przestawnych

Witam,
Przepraszam, jeśli to pytanie już gdzieś, kiedyś się na tym forum pojawiło. Mam taki problem. Mam plik z kilkoma tabelami przestawnymi na kilku arkuszach dla danych z ostatniego arkusza. Żeby wyfiltrować dane dla tego samego warunku, muszę skakać po wszystkich arkuszach i filtrować. Podpowiedzcie proszę, jak (makro?) to zrobić, żeby filtrując na jednym arkuszu, nawet niech to będzie dodany arkusz z jakimś "multifiltrem" automatycnie filtrowało to samo na wszystkich arkuszach. Z góry dziękuję.

konto usunięte

Temat: Jeden filtr dla wielu tabel przestawnych

dla v2010 można to fragmentatorem zrobić - wstawić i zdefiniować, na których tabelach ma to działać:

Obrazek

Zbigniew K.:
Witam,
Przepraszam, jeśli to pytanie już gdzieś, kiedyś się na tym forum pojawiło. Mam taki problem. Mam plik z kilkoma tabelami przestawnymi na kilku arkuszach dla danych z ostatniego arkusza. Żeby wyfiltrować dane dla tego samego warunku, muszę skakać po wszystkich arkuszach i filtrować. Podpowiedzcie proszę, jak (makro?) to zrobić, żeby filtrując na jednym arkuszu, nawet niech to będzie dodany arkusz z jakimś "multifiltrem" automatycnie filtrowało to samo na wszystkich arkuszach. Z góry dziękuję.
Zbigniew K.

Zbigniew K. Researcher, Jato
Dynamics Ltd.

Temat: Jeden filtr dla wielu tabel przestawnych

Ja mam 2007 :(Zbigniew K. edytował(a) ten post dnia 29.02.12 o godzinie 11:48

konto usunięte

Temat: Jeden filtr dla wielu tabel przestawnych

w takim razie ktoś będzie chyba musiał podzielić się jakimś makrem
Zbigniew K.:
Ja mam 2007 :(
Maciej Bartosiak

Maciej Bartosiak IT CONSULTANT

Temat: Jeden filtr dla wielu tabel przestawnych

to ja tu widzę dwa rozwiązania:
1. Tworzysz kod który uaktywnia się przy zmianie tabeli przestawnej w danym arkuszu i na podstawie filtu aktywnej tabeli zmienia wartości we wszystkich tabelach
2. Tworzysz listę rozwijaną z dostępnymi wartościami filtru tabeli przestawnej i po zmianie tej wartości odświeżasz wszystkie tabele.

Rozumiem, że wszędzie wartości w filtrach są takie same??
Zbigniew K.

Zbigniew K. Researcher, Jato
Dynamics Ltd.

Temat: Jeden filtr dla wielu tabel przestawnych

Maciej Bartosiak:
to ja tu widzę dwa rozwiązania:
1. Tworzysz kod który uaktywnia się przy zmianie tabeli przestawnej w danym arkuszu i na podstawie filtu aktywnej tabeli zmienia wartości we wszystkich tabelach
2. Tworzysz listę rozwijaną z dostępnymi wartościami filtru tabeli przestawnej i po zmianie tej wartości odświeżasz wszystkie tabele.

Rozumiem, że wszędzie wartości w filtrach są takie same??

Generalnie chodzi, o dane motoryzacyjne, czyli w pierwszym arkuszu filtruje FORD MONDEO, to w pozostałych arkuszach, z automatu filtrują się FORDY MONDEO i nie muszę oddzielnie filtrować każdej tabeli, żeby zobaczyć wynik dla Mondeo
Maciej Bartosiak

Maciej Bartosiak IT CONSULTANT

Temat: Jeden filtr dla wielu tabel przestawnych

Zbigniew K.:
Maciej Bartosiak:
to ja tu widzę dwa rozwiązania:
1. Tworzysz kod który uaktywnia się przy zmianie tabeli przestawnej w danym arkuszu i na podstawie filtu aktywnej tabeli zmienia wartości we wszystkich tabelach
2. Tworzysz listę rozwijaną z dostępnymi wartościami filtru tabeli przestawnej i po zmianie tej wartości odświeżasz wszystkie tabele.

Rozumiem, że wszędzie wartości w filtrach są takie same??

Generalnie chodzi, o dane motoryzacyjne, czyli w pierwszym arkuszu filtruje FORD MONDEO, to w pozostałych arkuszach, z automatu filtrują się FORDY MONDEO i nie muszę oddzielnie filtrować każdej tabeli, żeby zobaczyć wynik dla Mondeo


pytam o to czy wszystkie wartości w filtrach tabel są takie same, czy różne np:
czy w arkuszu1 mogę wybrać:
-ford mondeo
-ford focus
-ford fiesta

a w arkuszu2 mam listę:
-ford mondeo
-ford focus
-fiat panda
Zbigniew K.

Zbigniew K. Researcher, Jato
Dynamics Ltd.

Temat: Jeden filtr dla wielu tabel przestawnych

Maciej Bartosiak:
Zbigniew K.:
pytam o to czy wszystkie wartości w filtrach tabel są takie same, czy różne np:
czy w arkuszu1 mogę wybrać:
-ford mondeo
-ford focus
-ford fiesta

a w arkuszu2 mam listę:
-ford mondeo
-ford focus
-fiat panda

tak, takie same, wszystkie tabele są zbudowane na tych samym danych z ostaniego arkusza, czyli filtr będzie identyczny w każdym przypadku
Maciej Bartosiak

Maciej Bartosiak IT CONSULTANT

Temat: Jeden filtr dla wielu tabel przestawnych

ok to przedstawiam rozwiązanie o którym pisałem o numerze 2.

1. Tworzysz sobie procedurkę:

Sub ustaw_filtr_w_pt(nazwa_pola As String, wartosc As String,nazwa_arkusza)
Dim pt As PivotTable
For Each pt In sheets(nazwa_Arkusza).PivotTables
pt.PivotFields(nazwa_pola).ClearAllFilters
pt.PivotFields(nazwa_pola).CurrentPage = wartosc
Next pt
End Sub

którą umieszczasz w utworzonym module. Odpowiada ona za zmianę wartości w filtrze

2. Tworzysz sobie drugą procedurkę, która wywoła pierwszą w każdym arkuszu

Sub ustaw_filtry_we_wszystkich_arkuszach(nazwa_pola,wartość as string)
Dim sht As Worksheet
For Each sht In Sheets
Call ustaw_filtr_w_pt(nazwa_pola, wartosc,sht.name)
Next sht
End Sub


3. Teraz musisz wywolacz procedurę nr 2 np umieszczając pod jakimś przyciskiem wartości:

sub start()
a=inputbox() 'nazwa pola w tabeli przestawnej
b=inputbox() 'nazwa wartości jaka ma być w filtrze
call ustaw_filtry_we_wszystkich_arkuszach(a,b)

PS przepraszam za brak polotu w ptk 3;)

ale to rozwiąże problem:)
Zbigniew K.

Zbigniew K. Researcher, Jato
Dynamics Ltd.

Temat: Jeden filtr dla wielu tabel przestawnych

Mam już taki kawałek kodu:


Sub Makro3()
'
' Makro3 Makro

On Error Resume Next
Dim ws As Worksheet
Dim wsMain As Worksheet
Dim ptMain As PivotTable
Dim pt As PivotTable
Dim pfMain As PivotField
Dim pi As PivotItem
Dim pf As PivotField

On Error Resume Next
Set wsMain = Sheets("Seats")
Set ws = Sheets("Drive")
Set ptMain = ActiveSheet.PivotTables("PivotTable6")

Application.EnableEvents = False
Application.ScreenUpdating = False

For Each pfMain In ptMain.PageFields
If ws.Name <> wsMain.Name Then
For Each pt In ws.PivotTables
pt.RefreshTable
For Each pf In pt.PageFields
If pf.Name = pfMain.Name Then
If pfMain.CurrentPage = "(All)" Then
pf.CurrentPage = "(All)"
Exit For
End If
For Each pi In pf.PivotItems
If pi.Name = pfMain.CurrentPage Then
pf.CurrentPage = pi.Name
Exit For
End If
Next pi
End If
Next pf
Next pt
End If
Next pfMain

Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub


i nie umiem go przerobić tak, żeby zmieniać filtry we wszystkich arkuszach. W tym przypdku tylko dla "Drive", albo innego, który wpiszę zamiast Drive. Podpowiedzcie proszęZbigniew K. edytował(a) ten post dnia 01.03.12 o godzinie 10:40



Wyślij zaproszenie do