###VBA动态数组简单应用
动态数组在VBA中,用于筛选大数据是比较好用的.当一行数据满足筛选要求时,将该行数据写入到新的数组中,逐维增加,最后再将这个新的数组输出到表格.
动态数组和一静态数组定义不同
静态数组定义:
dim arr
动态数组定义:
dim arr()
重新定义动态数组:
redim arr(1 to 5,2 to x)
保留原数组中的内容重新定义动态数组:
redim preserve arr(1 to 5, 2 to x)
*注意:一个二维的动态数组的第一维是不可以重新定义的,只能变动第二维.*
由于动态数组只能增加第二维,所以在复制原二维数组时,就要求转换维度或交换维度中的数据.
动态数组应用举例:
``sub 拆分表格()
dim arr '原数组,用于保存原表格中数据
dim arrnew() '动态数组,用于保存符合要求的数据
dim arrparameter '存放筛选内容的数据
dim Xdimension as long '一维数(行数)
dim Ydimension as integer '二维数(列数)
dim rowpara as integer '筛选要执行的次数
dim addrow as long '新数组的行数
arr=sheet1.ragne(“A1”).currentregion '写入sheet1中的数据到arr数组
arrparameter =sheet2.range(“A1”).currentregion '写入sheet2中的要筛选的内容
for rowpara= 1 to ubound(arrparameter) '逐次对比筛选内容
for Xdimension = 2 To ubound(arr) '逐行对比原数据内容
If arrparameter(rowpara, 1) = arrx(Xdimension, 7) Then '判断筛选条件与原表中内容是否一致,数字7是表格中的特定列
addrow = addrow + 1
redim Preserve arrnew(1 To ubound(arr,2), 1 To addrow) '满足条件后增加一行新数据
for Ydimension= 1 To UBound(arr, 2) '通过循环写入行中的每一项目
arrnew(Ydimension, addrow) = arrx(Xdimension ,Ydimension) '通过交换维度的方式写入到新的组:arrnew(列,行)=arr(行,列)
next Ydimension
end If
next Xdimension
next rowpara
end