VBA

32、[VBA入门到放弃笔记] 动态的数组

2017-06-22  本文已影响949人  叶知行
Sub vv()
    Dim arr(), i As Long
    ReDim arr(1 To 10)'设置数组大小,一维数组,10个元素。
    For i = 1 To 10
        arr(i) = i
    Next
    Range("a1").Resize(UBound(arr), 1) = Application.Transpose(arr)
End Sub
Sub vv()
    Dim arr(), i As Long
    ReDim arr(1 To 10, 1 To 2) '设定数组大小
    For i = 1 To 10
        arr(i, 1) = i
        arr(i, 2) = i * 100
    Next
    Range("a1").Resize(UBound(arr), 2) = arr
End Sub

Sub vv()
    Dim arr(), i As Long
    For i = 1 To 10
    ReDim Preserve arr(1 To i)
        arr(i) = i
    Next
    Range("a1").Resize(UBound(arr), 1) = Application.Transpose(arr)
End Sub
Paste_Image.png
Sub cc()
    Dim arr(), i As Long
    For i = 1 To 10
    ReDim arr(1 To i)
        arr(i) = i
    Next
    Range("a1").Resize(UBound(arr), 1) = Application.Transpose(arr)
End Sub
Sub kk()
    Dim arr(), i As Long
    For i = 1 To 10
    ReDim Preserve arr(1 To 1, 1 To i)
        arr(1, i) = i
    Next
    Range("a1").Resize(UBound(arr, 2), 1) = Application.Transpose(arr)
End Sub

Sub kk()
    Dim arr(), i As Long
    ReDim arr(1 To 65537)
    For i = 1 To UBound(arr)
        arr(i) = i
    Next
    Range("a1").Resize(UBound(arr), 1) = Application.Transpose(arr)
End Sub
出错了

【练习】提取销售额大于等于500的部门。

提取数据
    Dim arr, brr()
    arr = Range("a1").CurrentRegion
    For i = 2 To UBound(arr)
        If arr(i, 2) >= 500 Then
            k = k + 1
            ReDim Preserve brr(1 To 2, 1 To k) '2行K列的数组
            brr(1, k) = arr(i, 1) '提取符合条件的数据,这是部门
            brr(2, k) = arr(i, 2) '销售额
        End If
    Next
    Range("g1").Resize(2, k) = brr '未转置前的数据(数组brr原来的样子)
    Range("d2").Resize(k, 2) = Application.Transpose(brr) '转置后的数据
End Sub
Paste_Image.png
Sub ff1()
    Dim arr, brr()
    arr = Range("a1").CurrentRegion
    '设置brr和arr一样大小,因为是提取数据操作,数据条数不可能超过arr的条数
    ReDim brr(1 To UBound(arr), 1 To 2)
    For i = 2 To UBound(arr)
        If arr(i, 2) >= 500 Then
            k = k + 1
'提取符合条件的数据放到数组brr
            brr(k, 1) = arr(i, 1) '提取符合条件的数据,这是部门
            brr(k, 2) = arr(i, 2) '销售额
        End If
    Next
    Range("d2").Resize(k, 2) = brr '直接输出数据
End Sub
Paste_Image.png
上一篇 下一篇

猜你喜欢

热点阅读