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