- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 A 列、1、2、3、4、5 和 A、B、C 中有 8 个变量。
我的目标是过滤掉A、B、C,只显示1-5。
我可以使用以下代码来做到这一点:
My_Range.AutoFilter Field:=1, Criteria1:=Array("1", "2", "3","4","5"), _
Operator:=xlFilterValues
但是代码的作用是过滤变量 1 到 5 并显示它们。
我想做相反的事情,但通过过滤掉 A、B、C 并显示变量 1 到 5 来产生相同的结果
我尝试了这段代码:
My_Range.AutoFilter Field:=1, Criteria1:=Array("<>A", "<>B", "<>C"), _
Operator:=xlFilterValues
但是没有成功。
为什么我不能使用此代码?
它给出了这个错误:
Run time error 1004 autofilter method of range class failed
我该如何执行此操作?
最佳答案
我认为(通过实验 - MSDN 在这里没有帮助)没有直接的方法可以做到这一点。设置Criteria1
到Array
相当于使用下拉列表中的复选框 - 正如您所说,它只会根据与数组中的其中一项匹配的项目来过滤列表。
有趣的是,如果您有文字值 "<>A"
和"<>B"
在列表中并过滤宏记录器提供的内容
Range.AutoFilter Field:=1, Criteria1:="=<>A", Operator:=xlOr, Criteria2:="=<>B"
有效。但如果你有文字值 "<>C"
同样,当您在录制宏时过滤所有三个(使用复选框)时,宏记录器会精确复制您的代码,然后会因错误而失败。我想我会称其为错误 - 有些过滤器可以使用 UI 执行,但无法使用 VBA 执行。
无论如何,回到你的问题。可以过滤不等于某些条件的值,但最多只能过滤两个不适合您的值:
Range("$A$1:$A$9").AutoFilter Field:=1, Criteria1:="<>A", Criteria2:="<>B", Operator:=xlAnd
根据具体问题,有几种可能的解决方法:
=ISNUMBER(A2)
或=NOT(A2="A", A2="B", A2="C")
然后过滤TRUE
Criteria1:=">-65535"
(或低于您期望的合适数字)这将过滤掉非数字值 - 假设这是您想要的例如:
Public Sub hideABCRows(rangeToFilter As Range)
Dim oCurrentCell As Range
On Error GoTo errHandler
Application.ScreenUpdating = False
For Each oCurrentCell In rangeToFilter.Cells
If oCurrentCell.Value = "A" Or oCurrentCell.Value = "B" Or oCurrentCell.Value = "C" Then
oCurrentCell.EntireRow.Hidden = True
End If
Next oCurrentCell
Application.ScreenUpdating = True
Exit Sub
errHandler:
Application.ScreenUpdating = True
End Sub
关于excel - 使用excel vba过滤掉多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28575754/
我正在编写一个快速的 preg_replace 来从 CSS 中删除注释。 CSS 注释通常有这样的语法: /* Development Classes*/ /* Un-comment me for
使用 MySQL,我有三个表: 项目: ID name 1 "birthday party" 2 "soccer match" 3 "wine tasting evening" 4
我是一名优秀的程序员,十分优秀!