尝试在自动过滤器中使用数组条件时,我再次遇到麻烦。也许有人能够解决它。
我在excel表格中有以下格式的标准字符串:12562,15215(这些由用户编辑)。
我想要做的是循环使每个单元格包含这些条件,并使用单元格内容作为数组自动过滤另一个工作簿中的某个字段,然后转到下一行条件。
循环似乎很好(我可能错了)但是当涉及自动过滤器时,它找不到任何单元格。字符串变量不会正确传递给过滤条件数组(如果我只是将标准硬编码到过滤器 - 一切正常)。
我的代码是否包含一些错误,或整个方法是否存在缺陷?
感谢任何帮助。
Dim ExcRange As Range
Dim Col As Range
Dim Filter1 As Variant
With RawData.Worksheets(1)
.AutoFilterMode = False
End With
Dim Lastrow3 As Integer
Lastrow3 = RawData.Worksheets(1).Cells(Rows.Count, "O").End(xlUp).Row
Set ExcRange = RawData.Worksheets(1).Range("O11:O" & Lastrow3)
For Each Col In ExcRange
If Not Col Is Nothing Then
Filter1 = Split(Col.Value, ",")
With NewBook.Worksheets(1)
.Cells.AutoFilter Field:=1, Criteria1:=Array(Filter1), Operator:=xlFilterValues, Operator:=xlAnd
End With
Else
End If
Next Col
我也尝试过这样编码自动过滤器:
.Cells.AutoFilter Field:=5, Criteria1:=Filter1, Operator:=xlFilterValues, Operator:=xlAnd
答案 0 :(得分:1)
我认为你需要两个 - 删除引号并在每个单元格中创建一个数组。您可以通过调用Split
和Replace
函数来实现此目的。尝试这样做:
Filter1 =Split(Replace(Col.Value, Chr(34), ""), ",")
Filter2 = Split(Replace(Col.Offset(0, 1).Value, Chr(34), ""), ",")
Filter3 = Split(Replace(Col.Offset(0, 2).Value, Chr(34), ""), ",")
并以这种方式保持过滤...Criteria1:=Array(Filter1)...
如果我进行了样品测试,它就有效。