他山之石——VBA数组的使用-Part2(VBA Array)

继续学习!

Option Explicit

'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() 可以声明一个动态大小的数组,而且可以保留原来的数值,就相当于厂房小了,可以改扩建增大,但是它只能
        '让最未维实现动态,如果是一维不存在最未维,只有一维
    
     例子1见sheet1工作表
     
   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
     
     
     
     

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值