数组操作在VBA编程过程中应用很高效,如果熟练掌握一些数组使用方法,那么就会大大提高数据处理的过程。
本文介绍一下,如何在一个数组中查询某个值,然后返回查询到的结果,以数组形式返回。

如上图所示,应用到了Filter函数,VBA内置函数。

通过一个示例来了解一下使用方法,如下图所示:

查询数据表中一列数据,根据关键字进行检索,得到数据赋值给列表框。
就这么一个简单例子,使用两个过程即可实现。
如下代码:

重点,本函数是只能查询一维数组不能进行多维数组检索。
通过对一个一维数组检索某一个值返回一个数组,这个数组可以是包含查询关键字的数组也可是不包含关键字的数组,这样就给我们很方便地提取出一些想要或者不想要的数据来了。

其中有一个参数,include 参数来表示,如果为TRUE则返回包含关键字的数组,FALSE则返回不包含关键字的数组,关键字用Match参数来传递。

代码:
Sub GetArr()
'查询某值 并返回一个数组
Dim xArr, yArr
Dim ir As Long, i As Long
ir = 50
ReDim xArr(1 To ir)
For i = 1 To ir
xArr(i) = Cells(i, 3).Value
Next i
ActiveSheet.ListBox1.List = ScanArr(xArr, [f2], True)
Erase xArr
End Sub
Function ScanArr(xArr, xStr As Variant, xIn As Boolean)
'查询xArr数组 中符合xStr的项,返回一个一维数组,如果xIn为真则包含xStr,
'否则返回不包含xStr 的项目
On Error Resume Next
ScanArr = Array("")
Dim yArr
yArr = VBA.Filter(xArr, xStr, xIn, 0)
ScanArr = yArr
Erase yArr
End Function
数据处理是Excel应用的一个专业强项,通过数组操作更加可以便捷地实现数据管理过程,所以本文内容很有实际应用价值。
END