我正在尝试使用来自多个单元格的字符串值来过滤数据透视表,这些单元格存储在数组变量LTmonth()中。但是,当我将此数组变量插入下面的代码时,它不会出于某种原因读取数组值,也不会过滤存储在该数组中的值。
我注意到一件事,当我将LTmonth更改为过滤器的实际值(如下所示)时,代码完美运行:
“如果ActiveSheet.PivotTables(”PivotTable1“)。PivotFields(”MONTH“)。PivotItems(j)= ”JAN-2016“那么”
鉴于单元格值与数据透视表中的过滤器项完全匹配,如何使这两个值相互匹配?我到处寻找答案,但我找到的答案并没有帮助解决我的问题。这是我最接近使代码工作的原因,但我不确定为什么变量数组不起作用。
Sub Filter()
Dim i, j, z, monthcount As Integer
monthcount = 8
Dim LTmonth() As String
ReDim LTmonth(monthcount)
For i = 1 To monthcount
LTmonth(i) = ActiveSheet.Range("P2").Offset(i - 1, 0).Value
Next i
For j = 1 To ActiveSheet.PivotTables("PivotTable1").PivotFields("MONTH").PivotItems.Count
For z = 1 To monthcount
If ActiveSheet.PivotTables("PivotTable1").PivotFields("MONTH").PivotItems(j) = LTmonth(z) Then
ActiveSheet.PivotTables("PivotTable1").PivotFields("MONTH").PivotItems(j).Visible = True
Else
ActiveSheet.PivotTables("PivotTable1").PivotFields("MONTH").PivotItems(j).Visible = False
End If
Next z
Next j
End Sub
答案 0 :(得分:0)
看看你是否做到了想要实现的目标。
Sub Filter()
Dim pt As PivotTable
Dim pf As PivotField
Dim i, j, z, monthcount As Integer
monthcount = 8
Dim LTMonth() As String
ReDim LTMonth(monthcount)
For i = 1 To monthcount
LTMonth(i) = Format(ActiveSheet.Range("P2").Offset(i - 1, 0).Value, "mmm-yyyy")
Next i
Set pt = ActiveSheet.PivotTables("PivotTable1")
Set pf = pt.PivotFields("Month")
pf.ClearAllFilters
For j = 1 To pf.PivotItems.Count
For z = 1 To monthcount
If ActiveSheet.PivotTables("PivotTable1").PivotFields("MONTH").PivotItems(j) = LTMonth(z) Then
ActiveSheet.PivotTables("PivotTable1").PivotFields("MONTH").PivotItems(j).Visible = True
Exit For
End If
Next z
Next j
End Sub