VBA数组
1.在内存中读取
在内存中读取后用于继续运算,直接用下面的格式。表示编号是5的数字,并不是行数。如编号从-1开始,数组变量(5)是第七个数据。
数组变量(5)
数组变量(3,4)
3和4只是表示行,列编号,并不是行数和列数。
Sub t6()
Dim arr, arr1()
Dim x As Integer, k As Integer, m As Integer
arr = Range("a1:a10") 'arr 是二维数组
m = Application.CountIf(Range("a1:a10"), ">10")
ReDim arr1(1 To m) 'arr1是一维数组
For x = 1 To 10
If arr(x, 1) > 10 Then
k = k + 1
arr1(k) = arr(x, 1)
End If
Next x
Stop
End Sub
2 读取存入单元格中
2.1二维数组存入单元格
Sub t8()
Dim arr, arr1(1 To 5, 1 To 1)
Dim x As Integer
arr = Range("b2:c6") '把需要计算的两列放入数组中
For x = 1 To 5
arr1(x, 1) = arr(x, 1) * arr(x, 2)
Next x
Range("d2").Resize(5) = arr1
End Sub
2.2 一维数组存入单元格
Sub t9()
Dim arr, arr1(1 To 5)
Dim x As Integer
arr = Range("b2:c6")
For x = 1 To 5
arr1(x) = arr(x, 1) * arr(x, 2)
Next x '一维数组和单元格的对应关系是一行的关系
'range("a13").resize(1,5)=arr1 这时候对应的就是A13开头的一行五列数据
Range("d2").Resize(5) = Application.Transpose(arr1)
End Sub
2.3 数组部分存入
Sub t10()
Dim arr, arr1(1 To 10000, 1 To 1)
Dim x As Integer
arr = Range("b2:c6")
For x = 1 To 5
arr1(x, 1) = arr(x, 1) * arr(x, 2)
Next x
Range("d2").Resize(5) = arr1 ‘这个存储的容器多大取决于左面的范围,而不是取决于arr1 的大小,只需要arr1的范围大于左侧就不会提示出错。
End Sub
网友评论