动态数组示例

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


动态数组示例

例如上图,现需要提取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中对动态数组的概念及使用方法,大家可以看看喔

展开阅读全文

页面更新:2024-04-15

标签:数组   动态   赋值   示例   变量   行列   例子   定义   方向   代码   内容

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top