通过选择一系列标准 vba excel 通过输入数组自动过滤

Autofilter by inputting array by selecting a range of crieteria vba excel

编辑#1 我正在尝试根据作为数组的条件自动过滤 sheet,数组值是 select 通过使用对话框 select 编辑到 range.Also,这个对话框的意图是 select 需要 sorted.Here 的多个未排序值是代码:

Sub Hyperlink_opener()
Dim Selrng As Range
Dim srch_cr As Variant
Set Selrng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)

srch_cr = Array(Selrng)
Sheets("DocLog").Select
ActiveSheet.Range("$A:$F").AutoFilter Field:=1, Criteria1:=srch_cr, Operator:=xlFilterValues
'ActiveWindow.SmallScroll Down:=-15

End Sub

这当前不是在搜索我 select 编辑的单元格,而是给我一个错误 Autofilter method of range class failed.

根据您的 Operator:=xlOr,我认为您希望根据多个条件进行过滤。

根据 Microsoft's docs(对于 Excel 2010),您可以有 2 个标准,Operator:= 告诉它如何处理这两个标准。在您的情况下,代码将是:

ActiveSheet.Range("$a:$F").AutoFilter Field:=1, _
             Criteria1:=Srch_Cr(1), Criteria2:=Srch_Cr(2), Operator:=xlOr

您不能简单地将一个数组传递给 Criteria1 参数并假设 .AutoFilter 函数会弄清楚如何处理它。

只要您选择的范围包含文本或存储为文本的数字,就会执行此操作:

Sub Hyperlink_opener()
Dim Selrng As Range
Dim srch_cr As Variant

Set Selrng = Application.InputBox("Select a range", "Obtain Range Object", Type:=8)
srch_cr = Application.WorksheetFunction.Transpose(Selrng)
Sheets("DocLog").Range("$A:$F").AutoFilter Field:=1, Criteria1:=srch_cr, Operator:=xlFilterValues
End Sub

请注意,您需要转置范围以将其转为一维范围。另外,不用Select sheet,直接参考即可。

如果您有需要过滤的数字,您可以将它们作为文本存储在您的过滤范围内,或者通过解析数组将它们转换为代码中的文本。