【发布时间】:2017-08-28 13:26:13
【问题描述】:
我正在尝试使用来自多个单元格的字符串值过滤数据透视表,这些单元格存储在数组变量 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
【问题讨论】:
-
使用
F8调试代码以查看数组中的内容。并比较两个字符串使用InStr。 -
如何比较过滤项的字符串值?我认为可能是这种情况,因为过滤器中日期的格式可能与项目的实际格式不同。
标签: arrays excel vba filter pivot-table