【Excel VBA】数组应用(2)

≯℡__Kan透↙ 提交于 2020-03-03 00:27:36

图1 源数据

如果需要查询所有"编号"为"EH002"的记录,并将查询结果展示在单元格区域中,示例代码如下。

Sub LoopArr()
     Dim avntData() As Variant'声明数组保存数据源
     Dim avntResults(1 To 30, 1 To 4) As Variant
     Dim intCount As Integer'声明变量用于记录符合条件的数量
     Dim i As Integer
     avntData() = Sheets("数据源").Range("a2:d31").Value
     For i = 1 To UBound(avntData(), 1)
         If avntData(i, 2) = "EH002" Then
             intCount = intCount + 1
             avntResults(intCount, 1) = avntData(i, 1)
             avntResults(intCount, 2) = avntData(i, 2)
             avntResults(intCount, 3) = avntData(i, 3)
             avntResults(intCount, 4) = avntData(i, 4)
         End If
     Next i
     Range("A2").Resize(intCount, 4) = avntResults()'将数组写入单元格区域中
 End Sub

第3行代码声明数组用于保存查询结果。由于结果条数未知,所以定义数组的行数大于或等于数据源行数。除此之外,也可以使用定义动态数组的方式。

注:数组输出到单元格区域时,通常与Range.Resize语句配合使用,以便确定目标单元格区域的范围。

运行LoopArr过程,结果如图2所示。

数组的上界与下界

使用Ubound函数获取数组某个维度的上界,也就是最后一个保存数据的位置编号。

Ubound函数的语法格式如下。

UBound(arrayname,维度)

参数arrayname是必需的,其值为一个数组。

参数与维度是可选的,其值指定返回某个维度的界限,此参数应为整数,不指定该参数时,默认值为1.

Lbound和Ubound函数的语法格式完全相同,二者的区别在于Lbound函数返回数组的下标下界,Ubound函数返回数组的下标上界。

图2 罗列符合条件的信息


微信公众号:VBA168

淘宝店铺地址:https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4004-21233576391.4.1af0683dzrx3oU&id=584940166162

关注微信公众号,每天及时接收Excel VBA经典示例讲解。

淘宝店铺提供Excel定制服务。

祝你工作和学习更轻松!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!