VBA XLS自动过滤标准不等于零,但我想测试公式的结果

时间:2013-12-19 23:03:46

标签: excel vba excel-vba

我正在尝试过滤出E(公式)列的结果为0的所有行。我想我已经接近了。此工作表是另一个工作表上的数据透视表的结果,我希望它在刷新数据透视图时始终生效。现在,问题的范围是在公式上显示Not 0的位置。

Sub HideIfZero()
  Dim LastRow As Long

  ActiveWorkbook.Sheets("Results").Activate 
  ActiveSheet.AutoFilterMode = False

  With Worksheets("Results")
    .Range("$A:$G").AutoFilter
    .Range("$A:$G").AutoFilter field:=5, Criteria1:="<>0" 'this isn't working in the NOT select

    LastRow = .Range("A" & .Rows.Count).End(xlUp).Row    
  End With 
End Sub

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

Sub HideIfZero()

    Dim PivotSht As Worksheet, WS As Worksheet
    Dim LastRow As Long, PT As PivotTable

    With ThisWorkbook
        Set PivotSht = .Sheets("ModifyMe") 'Modify to suit.
        Set WS = .ActiveSheet
    End With

    For Each PT In PivotSht.PivotTables
        PT.RefreshTable
    Next PT

    With WS
        .AutoFilterMode = False
        With .Range("A:G")
            .AutoFilter Field:=5, Criteria1:="<>0"
        End With
        LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
        Debug.Print LastRow
    End With

End Sub

这将更新正确工作表中的所有数据透视表,并在工作表中应用过滤器所在的过滤器。

如@andy holaday所述,这将适用于硬值和公式计算值等于非零(您的条件)。

如果有帮助,请告诉我们。