我有一个枢纽分析表,并Date
作为枢纽分析栏位。我想使用添加一个透视过滤器Type=xlAllDatesInPeriodJanuary
,但是我不想硬编码过滤到哪个周期。我不确定在VBA中是否可行,但是我可以使用变量并连接该数据透视表类型吗?假设我要输入的月份是Sheet2
cell 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
这样,数据透视表会自动过滤到输入Sheet2
,的月份A1
。如果这不可能,那么我可以编写12条If
语句来读取月份的名称和代码Type=xlAllDatesInPeriodJanuary/February/March/etc
,但前提是这是唯一的方法。
您可以使用Dictionary
创建枚举。该值xlAllDatesInPeriodJanuary
通过xlAllDatesInPeriodDecember
是57
通过68
,所以加表示枚举和值的名称字符串:
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
根据字符串键检索正确的值:
PvtTbl.PivotFields("Date").PivotFilters.Add Type:=d("xlAllDatesInPeriod" & month)
如果您将其存储month
为整数而不是(1 - 12
),则可能会忘记所有关于字典的信息,而仅使用以下内容:
PvtTbl.PivotFields("Date").PivotFilters.Add Type:=(xlAllDatesInPeriodJanuary + month - 1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句