【问题标题】:excel macro vba Filtering using wildcardsexcel宏vba过滤使用通配符
【发布时间】:2015-08-28 19:28:14
【问题描述】:

我需要在数据透视表中进行过滤。 我需要取消选择所有以“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

但这不起作用

【问题讨论】:

  • 听起来像 For Each pivotItem in pivotField.PivotItems 在这里是有序的。看看这个答案中PivotItems 上的For Each 循环......它应该让你开始。 stackoverflow.com/questions/30763455/…

标签: vba excel filtering wildcard


【解决方案1】:

试试这个:

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

【讨论】:

  • 谢谢,几乎成功了。但是 .PivotItems(i).Visible = True 当它转到以 A. 或 H. 开头的项目时会出错。
  • 尝试在上述代码前添加On Error Resume Next。当项目已经可见时,它可能会引发异常
  • 对不起,没有马上看到你的回复,它正在运行但只是出错了。所以我添加了错误处理,它完全按照我的需要工作。 /thx
  • 好答案。对于该错误,在可见项上设置Visible = True 不会出错。当您到达最后一个可见的PivotItem 时,此类代码可能会引发错误。数据透视表的规则是至少一项必须可见,因此最后一项上的Visible = False 会引发错误。这可能很难完全防止,但捕获错误可以让应该隐藏的项目可见。 (另外,我认为您可能已经根据问题描述翻转了哪些项目应该是Visible。)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 1970-01-01
  • 2018-10-14
  • 1970-01-01
  • 2017-08-31
  • 1970-01-01
相关资源
最近更新 更多