VBA Auswahl in Pivotfilter
#1
Hallo zusammen,

ich habe hier zwei Arbeitsblätter. Einmla Blatt "A" und einmal Blatt "B". 

In Blatt A stehen in Spalte 6 Zuordnungen untereinander in einer Liste. Über folgenden Code werden diese selektiert:

Code:
    Set dictCodes = CreateObject("scripting.dictionary")
     dictCodes("10") = "1"
     dictCodes("20") = "2"
     dictCodes("30") = "3"
     dictCodes("60") = "4"
     dictCodes("70") = "5"
     dictCodes("80") = "6"

Code:
    For Each k In dictCodes.Keys     
           Sheets("A").Select
            ActiveSheet.Range("$A$5:$Z$342").AutoFilter Field:=6, Criteria1:="<>" & k, Operator:=xlFilterValues
            Rows("6:6").Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.Delete Shift:=xlUp
            ActiveSheet.Range("$A$5:$Z$342").AutoFilter Field:=6
     Next k


In Blatt B gibt es die Zuordnungen auch - allerdings stehen sie nicht in einer Spalte untereinander, sondern in Zelle B1 in einem Pivotfilter. 

Logisch soll genau das Gleiche passieren wie bei Blatt A - ich weiß nur nicht, wie ich den Code umbauen muss.

Wenn ich den Pivotfilter mit dem Makroaufzeichner anspreche sieht das so aus:

Code:
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Company code").CurrentPage _
        = "10"



Kann mir bitte jemand helfen?
Top
#2
Hat niemand eine Idee?

Welche Informationen fehlen noch? 
Wäre es mit Beispieldatei einfacher?
Top
#3
Code:
    For Each k In dictCodes.Keys     
           Sheets("A").Select
            ActiveSheet.PivotTables("PivotTable1").PivotFields("Company code").CurrentPage _ ="<>" & k, Operator:=xlFilterValues
            Rows("6:6").Select
            Range(Selection, Selection.End(xlDown)).Select
            Selection.Delete Shift:=xlUp
            ActiveSheet.PivotTables("PivotTable1").PivotFields("Company code").CurrentPage _ ="<>" & k, Operator:=xlFilterValues
     Next k


So irgendwie? Tut aber nicht :(
Top
#4
Hi

Zitat:Wäre es mit Beispieldatei einfacher?

Wenn diese zeigt was vorliegt und was das Wunschergebnis ist.
Dann auf jeden Fall eventuell. :19:

Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • StrammerMax
Top
#5
Kommt  :05:
Top
#6
.. braucht aber ganz schön ...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • StrammerMax
Top
#7
Entschuldigt bitte die lange Zeit. 

Also kurze Erläuterung, was gemacht werden soll:

Es gibt ein Blatt "Data BBB" mit einer Liste von Werten. U.a. auch den "Company Code". 
Im Company Code stehen logischerweise mehrere Company Codes. 

Die einzige Aufgabe des Makros ist die, sequentiell einen Company Code nach dem Anderen zu selektieren und für jeden Company Code eine Datei abzuspeichern, in der nur die Daten des jeweiligen Companycodes sichtbar sind. 

Das funktioniert so auch einwandfrei. Er wählt in der Liste einen Company Code aus, speichert die Datei, nimmt den nächsten Comapny Code usw... bis er durch ist. 

Nun gibt es aber noch ein zweites Blatt, welches neu ist. Auf dem zweiten Blatt ist eine Pivot die auf das erste Blatt referenziert. 
Auch hier soll 1:1 das gleiche passieren. In der Datei, die erstellt wird soll auch das Blatt mit der Pivot mitgenommen werden, aber ebenfalls auf den entsprechenden Company Code selektiert werden. 
Da komme ich aktuell nicht weiter.


.xlsm   Test.xlsm (Größe: 97,17 KB / Downloads: 1)


Was noch zu berücksichtigen ist: Es gibt zwei Ausnahmen, bei denen zu einem Company Kürzel mehrere Company Codes gehören. Für das Data BBB Blatt wird das auch alles richtig berücksichtigt. Nur mit der Pivot komme ich nicht weiter.
Top
#8
Hi
 
Leider steige ich noch nicht durch was dir noch fehlt.
Dein Code erzeugt dir für jede Company eine Datei in der dann auch die Pivot enthalten ist. Wenn man eine Datei öffnet und die Pivot einmal aktualisiert hast du doch was du brauchst.
Oder nicht?


Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • StrammerMax
Top
#9
Ich bin so d*mm.... 

Er hat die Tabelle als Basis, die im neuen Blatt nur einen Company Code anzeigt - dementsprechend ist die Pivot "automatisch" schon gefiltert, weil es nur eine Möglichkeit gibt. 

Aber wie du sagst - man muss im neu erzeugten Blatt ein Mal die Pivot aktualisieren, damit im Filter auch nur noch ein Company Code angezeigt wird. 
Gibt es eine Möglichkeit die Datei so zu erzeugen, dass beim Start automatisch die Pivottabellen aktualisiert werden?

Ich kenne dieses "on start... pivot table..." aber das müsste ja dann in die neu erzeugte Datei als Makro.
Top
#10
Hi

Setze entweder in der Quelldatei in den Pivot Optionen -> Daten -> Aktualisieren beim Öffnen der Datei den Haken.

Oder nur im Code vor dem Speichern für die neue Datei die Zeile. (Sheet und Pivotnamen anpassen)
ActiveSheet.PivotTables("PivotTable1").PivotCache.RefreshOnFileOpen = True

Gruß Elex
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • StrammerMax
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste