我创建的过程总是通过VBA过滤Excel中的特定标准。我的Excel文件从其他数据库下载数据。下载后,我需要过滤它来获得这个数据。因此,我创建了执行此操作的过程。但是,有时没有数据,因为数据库没有更新,因此没有下载数据。在这种情况下,我的Filter中没有这个条件。因此,如果有数据,Filter应该用于"检查",如果没有数据,则应该清除此Filter。我想知道"如果"函数,但我不知道如何实现它。我的代码是:
Sub Filter1_Overview()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("X")
sh.AutoFilterMode = False
sh.Range("A1:Y7").AutoFilter Field:=7, Criteria1:="Name" 'this line of code is good
sh.Range("A1:Y7").AutoFilter Field:=18, Criteria1:="Check" 'I would like to modify it
End Sub
如果我实现这段代码并且没有"Check"条件,将有空白单元格,但我想只有清除过滤器。但是,如果有"检查"的数据,"检查"的数据;应该显示标准。你有什么办法处理它吗?如果有人能指导我,我会很感激的。
可选第二过滤器
Option Explicit
Sub Filter1_Overview()
With ThisWorkbook.Worksheets("X").Range("A1:Y7")
.Worksheet.AutoFilterMode = False
.AutoFilter Field:=7, Criteria1:="Name"
If Application.CountIf(.Resize(.Rows.Count - 1, 1) _
.Offset(1, 17), "Check") > 0 Then
.AutoFilter Field:=18, Criteria1:="Check"
End If
End With
End Sub
请尝试下一个代码:
Sub Filter1_Overview()
Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("X")
sh.AutoFilterMode = False
sh.Range("A1:Y7").AutoFilter Field:=7, Criteria1:="Name" 'this line of code is good
If WorksheetFunction.CountIf(sh.Range("T:T"), "Check") > 0 then
sh.Range("A1:Y7").AutoFilter Field:=20, Criteria1:="Check"
end if
End Sub