2017-05-10 1 views
0

Ich versuche, ein Makro zum Filtern einer Pivot-Tabelle basierend auf einem benutzerdefinierten Bereich einzurichten.Filtern einer Pivot-Tabelle basierend auf Werten aus einem benutzerdefinierten Bereich

Bisher ist alles, was ich habe, die Aufforderung, die Reichweite zu bekommen. Leider weiß ich nicht, wie ich die Werte aus dem Bereich übernehmen und auf den Filter anwenden soll. Danke für Ihre Hilfe!

Sub foreachloop() 

    Dim wbmodel As Excel.Workbook 
Set wbmodel = ActiveWorkbook 

Dim rng As Range 
Dim Filter As String 




    With wbmodel.Sheets("Pivot_model").PivotTables("Modelpivot") 

    .ClearAllFilters 

    Set rng = Application.InputBox("select Range", "Inputs", Type:=8) 
    Filter = Application.InputBox("select Filter", "Inputs", Type:=8) 

    MsgBox rng.Address 
    MsgBox Filter 


    For Each PivotItem In .PivotFields(Filter).PivotItems 
    Select Case PivotItem.Name 
     Case rng 
      PivotItem.Visible = True 
     Case Else 
      PivotItem.Visible = False 
     End Select 
    Next PivotItem 


    End With 

    End Sub 

Ok. also habe ich ein paar (kleine) Updates vorgenommen. Ich habe meine erste "For Each" -Schleife gemacht. Jetzt weiß ich, dass ich eine ähnliche "für jede" Schleife machen muss, um den Filter anzuwenden. Ich habe einige Stunden mit dem Code gekämpft und bin mir unsicher, wohin ich als nächstes gehen soll.

Antwort

0

Versuchen Sie, diese Filter Excel pivot table using VBA

Sie, um durch Ihren Bereich haben und die Pivot-Punkt sichtbar, alles andere versteckt machen.

+0

Ich bin sue dieser Beitrag hat genau das, was ich brauche, aber um ganz ehrlich zu sein, brauche ich einen Interpreter, um den Lösungscode für mich zu entziffern. Ich glaube, dass ich mit meinem aktuellen Code auf dem richtigen Weg bin. Ich bin mir einfach nicht sicher, wie ich durch den "Rng" fahren soll ... Kannst du mir bei diesem letzten Abschnitt helfen? – VBArookie

+0

Ich denke, der Grund, warum mein Code nicht funktioniert, ist, weil ich den Benutzer einen Bereich eingegeben hatte. Ich muss jetzt die Werte innerhalb des Bereichs durchlaufen. Ich könnte komplett außerhalb der Basis sein und es könnte einen einfacheren Weg geben, dies zu tun. – VBArookie

+0

Sie müssen eine Variable zuweisen. Sie haben also "rng" als Ihre Variable zugewiesen. Aber Sie müssen Ihren Wert für Rng festlegen. wie ... rng = Zellen (n + 1,1) .value https://msdn.microsoft.com/en-us/library/office/ff196273.aspx – gemmo

Verwandte Themen