excel - Excel VBA:如何过滤出数组
问题描述
如何通过 VBA 过滤出数组。我的意思是,我想arr
从归档的 29 中排除数组。arr
这是一个很长的列表。以下代码段不起作用。
arr = Array("<>0735", "<>801124", "<>0613","<>0921", "<>1086", "<>0949", "<>0494", "<>0767", "<>0739")
MySheet.Range("AB1").AutoFilter _
Field:=29, _
Criteria1:=arr, _
Operator:=xlFilterValues
解决方案
如果要使用AutoFilter并排除多个值,请创建一个仅包含“好”值的数组。假设我们从:
我们想排除 Stooges。我们需要创建一个“Stooge-free”数组”:
Sub NoStooges()
Dim rng As Range, c As Collection
Dim r As Range, v As String, n As Long
Dim i As Long, arr
Set rng = Range("A2:A20")
Set c = New Collection
For Each r In rng
v = r.Value
If v <> "Larry" And v <> "Moe" And v <> "Curley" Then
On Error Resume Next
c.Add v, CStr(v)
On Error GoTo 0
End If
Next r
n = c.Count
ReDim arr(1 To n)
For i = 1 To n
arr(i) = c.Item(i)
Next i
With ActiveSheet
If .FilterMode Then Cells.AutoFilter
.Range("$A$1:$A$20").AutoFilter
.Range("$A$1:$A$20").AutoFilter Field:=1, Criteria1:=(arr), Operator:=xlFilterValues
End With
End Sub
数组arr
及其关联的 Collection 只有三个元素 {a, b, c} 。代码产生:
推荐阅读
- r - 无法更改线条和散点图R ggplot的颜色
- redis - 此操作已在命令映射中禁用且无法使用:AUTH: RedisCommandException
- html - 有没有办法使用 Nightmare JS 在网页上的框架内导航?
- r - 如何生成两个遵循相似(但不相等)正弦形式的随机数序列?
- sql - 如何使用 curdate 过滤 SQL?(示例:注册“created_date”列超过 180 年前)(responsys - oracle)
- jquery - Select2 在 Amazon Web Services (AWS) 中不起作用
- firebase - 实时查询firebase数据
- java - Java Arrays.sort() 也没有找到适合排序的方法
- c# - LINQ - 左连接将右结果转换为列表
- angular - 在 Angular 7 中进行生产构建后,缓存破坏有时不起作用