Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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?
Antworten Top
#2
Hat niemand eine Idee?

Welche Informationen fehlen noch? 
Wäre es mit Beispieldatei einfacher?
Antworten 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 :(
Antworten 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
Antworten Top
#5
Kommt  :05:
Antworten 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
Antworten 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.
Antworten 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
Antworten 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.
Antworten 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
Antworten Top


Gehe zu:


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