VBA从区域range()转化的数组都是二维数组,但特殊的1列或1行可以用Application.transpose为一维数组

 

  • 转1维
  • 如果取的range是1列,那么transpose1次可以变成1维数组
  • 如果取的range是1行,那么transpose2次可以变成1维数组
  • 其他多行多列的是不可能转为1维数组的
Sub test_arr1()


Debug.Print "这都是二维数组"
'单列
arr1 = Range("a1:a10")
'单行
arr2 = Range("a1:e1")
'范围
arr3 = Range("a1:e3")
Debug.Print


Debug.Print "for each不管是几维数组,先行再行逐个显示"
For Each I In arr1
   Debug.Print I
Next
Debug.Print

For Each I In arr2
   Debug.Print I
Next
Debug.Print

For Each I In arr3
   Debug.Print I
Next
Debug.Print



Debug.Print "用for index 的方法遍历"
For I = LBound(arr1) To UBound(arr1)
    Debug.Print arr1(I, 1)
Next
Debug.Print


For I = LBound(arr2) To UBound(arr2)
    Debug.Print arr2(1, I)
Next
Debug.Print

For I = LBound(arr3) To UBound(arr3)
    For J = LBound(arr3, 2) To UBound(arr3, 2)
        Debug.Print arr3(I, J);
    Next
    Debug.Print
Next
Debug.Print



'转1维
'如果取的range是1列,那么transpose1次可以变成1维数组
'如果取的range是1行,那么transpose2次可以变成1维数组
'其他多行多列的是不可能转为1维数组的

arr11 = Application.Transpose(arr1)
arr21 = Application.Transpose(Application.Transpose(arr2))

For I = LBound(arr11) To UBound(arr11)
    Debug.Print arr11(I)
Next
Debug.Print

For I = LBound(arr21) To UBound(arr21)
    Debug.Print arr21(I)
Next
Debug.Print


End Sub

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值