Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 35911|回复: 35

[分享] VBA数组入门第4例:数组导入到单元格中

  [复制链接]
发表于 2010-8-6 11:37 | 显示全部楼层 |阅读模式

 第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

附1-3例链接:


 
 
[此贴子已经被作者于2010-8-6 12:26:41编辑过]
发表于 2010-8-6 11:44 | 显示全部楼层
回复

使用道具 举报

发表于 2010-8-6 11:51 | 显示全部楼层
回复

使用道具 举报

发表于 2010-8-6 12:25 | 显示全部楼层

[em02]收藏帖子
回复

使用道具 举报

发表于 2010-8-6 12:26 | 显示全部楼层

太好啦
回复

使用道具 举报

发表于 2010-8-6 12:49 | 显示全部楼层

看得不是很懂!
回复

使用道具 举报

发表于 2010-8-6 13:14 | 显示全部楼层

留着

回复

使用道具 举报

发表于 2010-8-6 13:25 | 显示全部楼层

不懂也收藏,留用。
回复

使用道具 举报

发表于 2010-8-6 16:02 | 显示全部楼层

真是有意思,把数组赋值给单元格就可以,把单元格赋值给数组就不行。

Sub test()
    Dim arr(1 To 5)
    Dim x As Integer
    For x = 1 To 5
        arr(x) = 5 * x
    Next x
    Range("A1:E1") = arr
    arr = Range("A1:E1") (这一句就错误啦)
End Sub

对于一维数组,这样就麻烦啦,进的去,出不来,把数组赋值给单元格啦,但是由于数据是固定的,就没办法重新从单元格赋值给数组啦。
回复

使用道具 举报

发表于 2010-8-6 16:30 | 显示全部楼层

QUOTE:
以下是引用wbzxz在2010-8-6 16:02:00的发言:
真是有意思,把数组赋值给单元格就可以,把单元格赋值给数组就不行。

Sub test()
    Dim arr(1 To 5)
    Dim x As Integer
    For x = 1 To 5
        arr(x) = 5 * x
    Next x
    Range("A1:E1") = arr
    arr = Range("A1:E1") (这一句就错误啦)
End Sub

对于一维数组,这样就麻烦啦,进的去,出不来,把数组赋值给单元格啦,但是由于数据是固定的,就没办法重新从单元格赋值给数组啦。

固定大小的数组是不能直接这样赋值的
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-3 14:45 , Processed in 1.137266 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表