动态数组示例

动态数组示例

之前向大家展示过利用静态数组提取特定行内容例子,现例举利用动态数组进行提取特定行的例子,但该方法相对较难理解,大家感兴趣可以看看。

例如上图,现需要提取A列中内容为“d”的整行内容,代码如下:

Sub 动态数组示例()

Dim arr, arr1() ‘此处还不确定arr1中数组的大小,在后面确定之后会重新定义

arr = Range(“a2:d10”)

For x = 1 To UBound(arr)

If arr(x, 1) = “d” Then

k = k + 1

ReDim arr1(1 To 4, 1 To k) ‘注意此处“redim”只能在列方向定义动态变量,所以arr中数组是横向的,arr1中数组是纵向的,最后要将行列转置一下

arr1(1, k) = arr(x, 1)

arr1(2, k) = arr(x, 2)

arr1(3, k) = arr(x, 3)

arr1(4, k) = arr(x, 4)

End If

Next x

Range(“e1”).Resize(k, 4) = Application.Transpose(arr1) ‘此处就是将行列转置的代码

End Sub

上述代码标红字段表示将arr数组中的内容重新赋值给新的数组arr1,但会发现,arr数组和arr1中数组内容是行列颠倒的,那是因为“preserve”只能定义列方向的动态变量。

arr中符合条件的内容如下,是一个三行四列的数组:

然后红色代码将arr中的数组内容赋值给arr1,其内容如下:

很清楚地看到两个数组是行列颠倒的,所以最后需要将arr1中的行列再转换回来,就需要用到“transpose”,如上述代码黄色代码所示。最后代码运行结果如下:

该方法用来提取特定行有点儿难以理解,但可以提高大家的VBA中对动态数组的概念及使用方法,大家可以看看喔

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月23日
下一篇 2022年6月23日

相关推荐

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息