问题描述:当使用AutoFilter方法对数组进行筛选时,发现在数组中包含更多元素时,筛选结果无效。
解决方法:
Sub AdvancedFilterArray()
Dim dataArr As Variant
Dim resultArr() As Variant
Dim criteriaRange As Range
Dim filterRange As Range
' 获取数据数组
dataArr = Range("A1:A10").Value
' 设置筛选条件
Set criteriaRange = Range("B1:B2")
' 设置筛选范围
Set filterRange = Range("A1:A10")
' 执行筛选
filterRange.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=criteriaRange
' 将筛选结果赋值给结果数组
resultArr = filterRange.SpecialCells(xlCellTypeVisible).Value
' 显示结果
Range("D1").Resize(UBound(resultArr)).Value = resultArr
End Sub
Sub FilterUsingWorksheet()
Dim dataArr As Variant
Dim resultArr() As Variant
Dim ws As Worksheet
Dim filterRange As Range
' 获取数据数组
dataArr = Range("A1:A10").Value
' 创建新的工作表
Set ws = Worksheets.Add
' 将数据数组复制到工作表中
ws.Range("A1").Resize(UBound(dataArr)).Value = dataArr
' 设置筛选范围
Set filterRange = ws.Range("A1:A10")
' 执行筛选
filterRange.AutoFilter Field:=1, Criteria1:="Criteria"
' 将筛选结果赋值给结果数组
resultArr = filterRange.SpecialCells(xlCellTypeVisible).Value
' 显示结果
Range("D1").Resize(UBound(resultArr)).Value = resultArr
' 删除工作表
Application.DisplayAlerts = False
ws.Delete
Application.DisplayAlerts = True
End Sub
这两种方法可以在处理大量数据时有效地进行筛选操作。您可以根据具体情况选择适合您的方法。