删除工作簿中每个数据透视表的筛选器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除工作簿中每个数据透视表的筛选器相关的知识,希望对你有一定的参考价值。

我正在尝试对活动工作簿中每个工作表中的每个表进行排序,并重置所有过滤器。

请注意,每个表都是一个数据透视表。

Sub ResetFilters()
    Dim ws As Worksheet
    Dim wb As Workbook
    Dim listObj  As ListObjects

    For Each ws In ActiveWorkbook.Worksheets
        For Each listObj In ws
            With ActiveSheet.listObj.Sort.SortFields.Clear
        End With
        Next listObj
    Next ws
    End Sub

收到错误:第7行上的“对象不支持此属性或方法”。

答案

假设您的意思是清除过滤器并删除排序,您可以使用:

Sub ResetFilters()
    Dim ws                    As Worksheet
    Dim wb                    As Workbook
    Dim listObj               As ListObject

    For Each ws In ActiveWorkbook.Worksheets
        For Each listObj In ws.ListObjects
            If listObj.ShowHeaders Then
                listObj.AutoFilter.ShowAllData
                listObj.Sort.SortFields.Clear
            End If
        Next listObj
    Next ws
End Sub
另一答案

这适用于对前一个答案的一个小改动。只需使用ShowAutoFilter属性而不是ShowHeaders。 ShowAutoFilter是引用这些东西的属性:Screencap of AutoFilter Dropdown Box in Excel Table

(我会对其他答案发表评论,但我需要50个“声望”​​-_-)

另一答案

7行解决方案这将显示所有数据而不删除过滤器,并且在未过滤的纸张上不会失败。

Sub RemoveFilters()
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
    On Error Resume Next
    ws.ShowAllData
Next ws
End Sub

海报的VBA可能在遇到未经过滤的纸张时失败了。

要完全删除每个过滤器,只需用Cells.AutoFilter替换第4 + 5行。

以上是关于删除工作簿中每个数据透视表的筛选器的主要内容,如果未能解决你的问题,请参考以下文章

text 如何刷新工作簿中的所有数据透视表?

如何防止数据透视图成为工作表副本上的常规图表?

excel查找一段时间内的数据

Excel数据透视表、切片器如何做?

text 如何检查我的工作簿中是否有不同的数据透视缓存?

如何用vba实现数据透视表自动筛选