在xlPivotFiltertypes中使用一个variables
我有一个数据透视表与Date
作为一个枢轴字段。 我想添加Type=xlAllDatesInPeriodJanuary
一个数据透视filter,但我不想硬编码我过滤到哪个时期。 我不知道这是否可能在VBA中,但我可以使用一个variables,并连接该枢纽filtertypes? 比方说,我想要的月份被inputSheet2
,单元格A1
。
我知道这是行不通的,但我想做一些事情的效果:
Dim month As String Dim PvtTbl As PivotTable month = ActiveWorkbook.Sheets("Sheet2").Range("A1") PvtTbl = ActiveWorkbook.Sheets("sheet1").PivotTables("PivotTable1") PvtTbl.ClearAllFilters PvtTbl.PivotFields("Date").PivotFilters.Add Type="xlAllDatesInPeriod" & month
这样,数据透视表会自动过滤到inputSheet2
, A1
任何月份。 如果这是不可能的,我可以编写12 If
语句读取月份的名称和代码Type=xlAllDatesInPeriodJanuary/February/March/etc
,但只有这样才是唯一的方法。
您可以使用Dictionary
创build枚举。 xlAllDatesInPeriodJanuary
到xlAllDatesInPeriodDecember
的值是从57
到68
,所以添加表示枚举名和值的string:
Dim d As Object, i As Long Set d = CreateObject("Scripting.Dictionary") For i = 1 To 12 d.Add "xlAllDatesInPeriod" & MonthName(i), 56 + i Next
然后,您可以使用您的字典d
,根据string键检索适当的值:
PvtTbl.PivotFields("Date").PivotFilters.Add Type:=d("xlAllDatesInPeriod" & month)
如果您将month
存储为整数( 1 - 12
),则可能会忘记所有有关字典的内容,只需使用以下内容:
PvtTbl.PivotFields("Date").PivotFilters.Add Type:=(xlAllDatesInPeriodJanuary + month - 1)