excel - 如何根据范围自动过滤 - VBA代码
问题描述
我想制作一个代码,根据这些数字的某个范围过滤掉采购订单(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 列表中被过滤掉。我编写的代码只过滤掉了采购订单号 190152 - 其他三个被省略了。
解决方案
您将在此处遇到的问题与维度有关 -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
推荐阅读
- python - 如何根据我的系统更改路径名
- typescript - 基于文本循环遍历 cypress 元素
- c# - Lambda 表达式仅保留模 N 索引项?(不创建新列表)
- haskell - 如果 Either 可以是 Left 或 Right 但不能同时是两者,那么为什么在 Curry-Howard 对应关系中它对应于 OR 而不是 XOR 呢?
- mysql - 连接另一个表中唯一 id 为 0 的两个表
- excel - 在 pdf 和 excel 中拆分发票
- php - 无法使用 Symfony CLI / Xdebug 进行调试
- python - 我如何更好地执行这个 numpy 计算
- ionic-framework - Ionic vue 3 路线导航不正确
- javascript - 无法将 json 值检索到表中