excel - 如果过滤条件不存在,请勿将过滤器应用于列
问题描述
我有以下简单的 Excel 表:
A B C D
1 Products Check
2 Product A OK
3 Product B OK
4 Product C OK
5 Product D OK
6 Product E OK
7
8
在此数据上,我想使用此 VBA 运行过滤器:
Sub Filter()
Sheet1.Range("$A$1:$B$1").AutoFilter _
Field:=Sheet1.Range("$B$1").Column, _
Criteria1:="Error"
End Sub
VBA
只要条件Error
至少在Column B
.
但是,正如您在上面的示例中看到的那样,标准Error
根本没有出现。
现在,当我运行VBA
它时,它会将过滤器应用于Column B
并隐藏所有如下所示的行:
如何,如果过滤器不存在过滤器不应用于它,我是否必须修改我的VBA
so ?criteria
Column
解决方案
请试试这个:
Sub testFilterError()
Dim strErr As String
strErr = "Error"
If Application.CountIf(Sheet1.Range("B1:B" & Sheet1.Range("B1").End(xlDown).Row), "Error") > 0 Then
Sheet1.Range("$A$1:$B$1").AutoFilter _
field:=Sheet1.Range("$B$1").Column, _
Criteria1:=strErr
Else
MsgBox "No """ & strErr & """ string in B:B column..."
End If
End Sub
该代码可以很容易地适应其他一些在过滤中具有奇怪行为的单词......
推荐阅读
- python - Unicode 错误使用 to_csv 尽管指定编码 = 'utf-8'
- c - 如果在带有 tmpfs 的容器中运行,为什么介子无法确定 time_t 的大小?
- wordpress - 使用插件的分类模板
- javascript - Moment.js 在两个日期之间没有像我预期的那样工作
- python - Python - 使用正则表达式从文本数据中删除变量
- abap - 在 ALV-grid 的一个单元格中显示多行
- android - 使用 API 28 和“androidx.appcompat”库项目显示“AppCompatActivity”符号未找到
- javascript - 每个测试文件之前的 Jest 异步设置
- android - 科尔多瓦编辑配置不更新 AndroidManifest.xml
- java - 为什么 java "putAll" 不能深度复制 Map 的值元素?