'1、数组的大小 '数组是用编号排序的,那么如何获得一个数组的大小呢 'Lbound(数组) 可以获取数组的最小下标(编号) 'Ubound(数组) 可以获取数组的最大上标(编号) 'Ubound(数组,1) 可以获得数组的行方面(第1维)最大上标 'Ubound(数组,2) 可以获得数组的列方向(第2维)的最大上标 Sub d6() Dim arr Dim k, m arr = Range('a2:d5') For x = 1 To UBound(arr, 1)
Next x End Sub '2、动态数组的动态扩充
'如果一个数组无法或不方便计算出总的大小,而在一些特殊情况下又不允许有空位。这时我们就需要用动态的导入方法 ' 'ReDim Preserve arr() 可以声明一个动态大小的数组,而且可以保留原来的数值,就相当于厂房小了,可以改扩建增大,但是它只能 '让最未维实现动态,如果是一维不存在最未维,只有一维
Sub d7() Dim arr, arr1() arr = Range('a1:d6') Dim x, k For x = 1 To UBound(arr) If arr(x, 1) = 'B' Then k = k + 1 ReDim Preserve arr1(1 To 4, 1 To k) 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('a8').Resize(k, 4) = Application.Transpose(arr1) End Sub
Sub d8() Dim arr, arr1(1 To 100000, 1 To 4) arr = Range('a1:d6') Dim x, k For x = 1 To UBound(arr) If arr(x, 1) = 'B' Then k = k + 1 arr1(k, 1) = arr(x, 1) arr1(k, 2) = arr(x, 2) arr1(k, 3) = arr(x, 3) arr1(k, 4) = arr(x, 4) End If Next x Range('a15').Resize(k, 4) = arr1 End Sub
'3 清空数组 '清空数组使用earse语句 Sub d9() Dim arr, arr1(1 To 1000, 1 To 1) Dim x, m, k arr = Range('a1:a16') For x = 1 To UBound(arr) If arr(x, 1) <> '' Then k = k + 1 arr1(k, 1) = arr(x, 1) Else m = m + 1 Range('c1').Offset(0, m).Resize(k) = arr1 Erase arr1 k = 0 End If Next x End Sub |
|