我想编写一个代码,该代码将根据这些数字的一定范围过滤出采购订单(6位数字)数字。
我的工作簿中有2张纸。第一个称为“开始”,包括范围A1:A4中的数字,即180029、180298、181073、190152。在第二个称为PO列表的选项卡上,我具有一系列信息-15列23行。 PO列表的一列包含几个PO号,但是我只想过滤掉A1:A4范围内的那些-我认为这是一个数组。
Sub auto_filter()
Dim my_array() As Variant
my_array = Sheets("Start").Range("A1:A4").Value
Sheets("PO list").Range("A1").AutoFilter Field:=7, Criteria1:=my_array
'Operator:=xlFilterValues
我希望得到的结果是,范围A1:A4中的PO号将在PO选项卡列表中被过滤掉。我编写的代码仅过滤出PO号190152-其他三个省略了。
答案 0 :(得分:0)
您将遇到的问题与尺寸有关-Range.Autofilter
方法需要一个1D数组,但是您要向其传递1×4 2D数组
Dim RangeArray() As Variant, FilterArray() As Variant, ArrayPointer As Long
RangeArray = ThisWorkbook.Worksheets("Start").Range("A1:A4").Value
'Copy to a Base0 1D Array
ReDim FilterArray(1 To uBound(RangeArray,1)-lBound(RangeArray,1))
For ArrayPointer = 0 To uBound(FilterArray)
FilterArray(ArrayPointer) = RangeArray(ArrayPointer+lBound(RangeArray,1), lBound(RangeArray,2))
Next ArrayPointer
'Use the 1D Array
ThisWorkbook.Worksheets("PO List").Range("A1").Autofilter Field:=7, Criteria1:=FilterArray, Operator:=xlFilterValues