分享

VBA中数组下标的获取方法!

 L罗乐 2018-02-23


以前章节中我们讲到过利用宏来实现查询功能:


宏操作举例:用宏实现数据查询功能


尽管数据只有一点点,运行时还是有点卡,今天我们已经完全有能力自己写代码完成这个功能了。


案例:



如上,通过办事处来查询对应的姓名和销量。


思路如下:把三列数据写入数组arr1,该数组中如果办事处等于g3中的值,把arr1中第二列和第三列的值写入一个新的数组arr2,最后以f5为起点,重新选择一个和arr2规格相同的区域,把arr2放进去。


在写代码之前我们来学习VBA中的两个函数。

ubound:获取数组的最大下标

lbound: 获取数组的最小下标


比如:


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在以后的实例中会经常用得到。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多