通过选择一系列标准 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,直接参考即可。
如果您有需要过滤的数字,您可以将它们作为文本存储在您的过滤范围内,或者通过解析数组将它们转换为代码中的文本。
编辑#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,直接参考即可。
如果您有需要过滤的数字,您可以将它们作为文本存储在您的过滤范围内,或者通过解析数组将它们转换为代码中的文本。