分享

VBA 数组导入单元格

 L罗乐 2016-12-18
标签:数组导入单元格VBA

第3例我们学会了如何把单元格中的数据搬入内存,变身为VBA数组。那么,VBA数组怎么输回到单元格中呢?就象菜做好了,怎么更快的上桌呢?

1、二维数组的导入:

VBA中常见的数组形式有一维数组和二维数组,相比一维数组,二维数组输入则较为简单,直接放在一个单元格区域中就可以,即:

       Range(单元格区域)=arr

        '这里arr是一个二维数组,值得注意的是如果单元格区域小于二维数组,则显示二维数组的前面一部分数据,而如果单元格区域大于二维数组的数据储存量,则会显示错误值。

二维数组导入单元格示例:

如下图所示,要求在D列计算金额

代码:

Sub test()
 Dim arr     '声明一个变量用来盛放单元格数据
 Dim x As Integer
 arr = Range('a2:d5')     '把单元格数据搬入到arr里,它有4列4行
 For x = 1 To 4     '通过循环在arr数组中循环
   arr(x, 4) = arr(x, 3) * arr(x, 2)     '数组的第4列(金额)=第3列*第2例
 Next x
Range('a2:d5') = arr     '把数组放回到单元格中
End Sub

2、一维数组的导入:

   一维数组只有一排数据,而导入到单元格中却有两种选择:导入到一行里 或 导入到一列中。

  1)导入成为一行数据。

        VBA 一维数组的排列方式 等同于 单元格中方向排列,所以可以直接导入工作表的一行单元格里。而如果要放在一列中,则需要调用工作表函数transpose转置后再导入。例:

Sub test1()
 Dim arr(1 To 5) '声明一维数组
 For x = 1 To 5
   arr(x) = x * 2  '通过循环给每个位置赋值
 Next x
Range('A1:E1') = arr '把数组导入到excel中的a1:e1单元格中
Range('A1:A5') = Application.Transpose(arr) '如果是放在一列中,就需要对数组进行转置后再存放
End Sub



//-----------------------------------------------------------------------------


VBA数组与EXCEL单元格

复制内容到剪贴板
代码:
Sub sss()
Dim testArr1(), testArr2()
testArr1 = Range('A1:B2').Value
Range('A4:B5') = testArr1
Range('A6:B7') = Application.Transpose(testArr1)
testArr2 = Array(1, 2, 3)
Range('C1:E1') = testArr2
Range('C2:E2') = Application.Transpose(testArr2)
Range('D4:D6') = testArr2
Range('E4:E6') = Application.Transpose(testArr2)
End Sub
在A1:B2中输入1,2,3,4
然后运行代码,就看到效果了!



    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多