excel 宏 vba 使用通配符过滤
excel macro vba Filtering using wildcards
我需要在数据透视表中进行过滤。
我需要取消选择以 "A." 和 "H." 开头的所有项目
并保持其他所有选择。
项目包括:
A.(3-13个字符)
B.(3-13个字符)
一直到
Z.(3-13个字符)
原始数据也从 50-500 行变化(我今天可以有一个只有 50 行的数据 - 然后明天我可能有超过 500 行)
我当前的代码有效:(通过输入该列中出现的所有可能项目 - 大约 300 多个项目)它很长但有效。
最近我在该列表中添加了更多项目,而且我知道我们可以使用通配符。
[MY CURRENT CODE]
ActiveSheet.PivotTables("PivotTable1").PivotFields("column").ClearAllFilters
ActiveSheet.PivotTables("PivotTable1").PivotFields("column"). _
EnableMultiplePageItems = False
With ActiveSheet.PivotTables("PivotTable1").PivotFields("column")
.PivotItems(" PLACE ITEM HERE ").Visible = False
.PivotItems
.PivotItems
.PivotItems [repeat over 300 times - changing the " PLACE ITEM HERE " with the items on the column]
End With
我可以将 300 多行减少到大约 5-10 行,我正在考虑类似(如下)的事情,它也可以解决我的问题,即我的列表中没有新项目:
ActiveSheet.PivotTables("PivotTable1").PivotFields("column").ClearAllFilters
ActiveSheet.PivotTables("PivotTable1").PivotFields("column"). _
EnableMultiplePageItems = False
With ActiveSheet.PivotTables("PivotTable1").PivotFields("column")
.PivotItems("A.*").Visible = False
.PivotItems("H.*").Visible = False
End With
但这不起作用
试试这个:
With ActiveCell.PivotTable.PivotFields("Column")
For i = 1 To .PivotItems.Count
If .PivotItems(i).Name like "A.*" or .PivotItems(i).Name like "H.*" Then
.PivotItems(i).Visible = True
else
.PivotItems(i).Visible = False
End If
Next i
End With
我需要在数据透视表中进行过滤。 我需要取消选择以 "A." 和 "H." 开头的所有项目 并保持其他所有选择。
项目包括: A.(3-13个字符) B.(3-13个字符) 一直到 Z.(3-13个字符)
原始数据也从 50-500 行变化(我今天可以有一个只有 50 行的数据 - 然后明天我可能有超过 500 行)
我当前的代码有效:(通过输入该列中出现的所有可能项目 - 大约 300 多个项目)它很长但有效。 最近我在该列表中添加了更多项目,而且我知道我们可以使用通配符。
[MY CURRENT CODE]
ActiveSheet.PivotTables("PivotTable1").PivotFields("column").ClearAllFilters
ActiveSheet.PivotTables("PivotTable1").PivotFields("column"). _
EnableMultiplePageItems = False
With ActiveSheet.PivotTables("PivotTable1").PivotFields("column")
.PivotItems(" PLACE ITEM HERE ").Visible = False
.PivotItems
.PivotItems
.PivotItems [repeat over 300 times - changing the " PLACE ITEM HERE " with the items on the column]
End With
我可以将 300 多行减少到大约 5-10 行,我正在考虑类似(如下)的事情,它也可以解决我的问题,即我的列表中没有新项目:
ActiveSheet.PivotTables("PivotTable1").PivotFields("column").ClearAllFilters
ActiveSheet.PivotTables("PivotTable1").PivotFields("column"). _
EnableMultiplePageItems = False
With ActiveSheet.PivotTables("PivotTable1").PivotFields("column")
.PivotItems("A.*").Visible = False
.PivotItems("H.*").Visible = False
End With
但这不起作用
试试这个:
With ActiveCell.PivotTable.PivotFields("Column")
For i = 1 To .PivotItems.Count
If .PivotItems(i).Name like "A.*" or .PivotItems(i).Name like "H.*" Then
.PivotItems(i).Visible = True
else
.PivotItems(i).Visible = False
End If
Next i
End With