有没有办法在Excel VBA中不使用条件数组?

有没有办法在Excel VBA中不使用条件数组?,vba,excel,Vba,Excel,我有一列包含已知值。5个是用石头写的,另外一个是新的。我需要过滤新的(未知)值。如果我只有2个已知值,我可以使用=“”筛选出准则1和2 因为我们不能使用标准3,4。。。 有没有一种方法可以使用以下内容: 标准1:=“”数组(“Val1”、“Val2”和…) (说明:我想显示数组中没有的所有内容。) 谢谢。数据如下: 我们希望看到除Val1、Val2和Val3之外的所有内容 以下是一种方法: Sub AllButThree() Dim N As Long, ary(), c As Coll

我有一列包含已知值。5个是用石头写的,另外一个是新的。我需要过滤新的(未知)值。如果我只有2个已知值,我可以使用=“”筛选出准则1和2

因为我们不能使用标准3,4。。。 有没有一种方法可以使用以下内容:

标准1:=“”数组(“Val1”、“Val2”和…)

(说明:我想显示数组中没有的所有内容。)

谢谢。

数据如下:

我们希望看到除Val1、Val2和Val3之外的所有内容

以下是一种方法:

Sub AllButThree()
   Dim N As Long, ary(), c As Collection
   Dim i As Long, a As String, v As String
   ary = Array("Val1", "Val2", "Val3")
   Set c = New Collection
   N = Cells(Rows.Count, "A").End(xlUp).Row

   On Error Resume Next
   For i = 2 To N
      v = Cells(i, 1).Value
      If v <> ary(0) And v <> ary(1) And v < ary(2) Then
         c.Add v, CStr(v)
      End If
   Next i

   On Error GoTo 0
   ReDim bry(1 To c.Count)
   For i = 1 To c.Count
      bry(i) = c.Item(i)
   Next i

   ActiveSheet.Range("$A$1:$A" & N).AutoFilter Field:=1, Criteria1:=(bry), Operator:=xlFilterValues
End Sub
Sub-AllButThree()
长度为N的Dim,长度为ary(),长度为c的Dim作为集合
暗i为长,a为弦,v为弦
ary=数组(“Val1”、“Val2”、“Val3”)
集合c=新集合
N=单元格(Rows.Count,“A”)。结束(xlUp)。行
出错时继续下一步
对于i=2到N
v=单元格(i,1)。数值
如果变量(0)和变量(1)和变量<变量(2),则
c、 加五,集体安全技术审查(五)
如果结束
接下来我
错误转到0
重拨bry(1到c计数)
对于i=1到c,计数
bry(i)=c.项目(i)
接下来我
ActiveSheet.Range($A$1:$A“&N)。自动筛选字段:=1,标准1:=(bry),运算符:=xlFilterValues
端接头

它构建了我们希望看到的内容的数组。

不直接使用自动过滤器。您要么需要构建一个包含所需值的数组(通过循环并忽略已知值),要么可以使用高级过滤器代替。Sweet。正是我需要的。谢谢