VBA中数组下标的获取⽅法!
以前章节中我们讲到过利⽤宏来实现查询功能:
宏操作举例:⽤宏实现数据查询功能
尽管数据只有⼀点点,运⾏时还是有点卡,今天我们已经完全有能⼒⾃⼰写代码完成这个功能了。
案例:
如上,通过办事处来查询对应的姓名和销量。
思路如下:把三列数据写⼊数组arr1,该数组中如果办事处等于g3中的值,把arr1中第⼆列和第三列的值写⼊⼀个新的数组arr2,最后以f5为起点,重新选择⼀个和arr2规格相同的区域,把arr2放进去。
在写代码之前我们来学习VBA中的两个函数。
ubound:获取数组的最⼤下标
lbound:获取数组的最⼩下标resize函数vba
⽐如:
ubound/lbound中第⼆个参数,表⽰第⼏个维度,不写或写1表⽰返回第⼀个维度的最⼤或者最⼩下标。
还记得我们在前⾯章节中,⽤for next 循环时,to后⾯的值要通过对⼀列中的⾮空单元格⾏数进⾏计数,现在有了这个函数,那就很好实现了。
上⾯案例中的代码如下:
Sub 筛选()
Dim arr1, arr2, ts%, i%, n%
Range('f5:g16').ClearContents
arr1 = Range('a2', [c2].End(xlDown))
ts = Application.CountIf([a:a], [g3])
ReDim arr2(1 To ts, 1 To 2)
For i = 1 To UBound(arr1)
If arr1(i, 1) = [g3].Value Then
n = n 1
arr2(n, 1) = arr1(i, 2)
arr2(n, 2) = arr1(i, 3)
End If
Next
[f5].Resize(ts, 2) = arr2
End Sub
ubound在以后的实例中会经常⽤得到。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。