Excel精英培训网

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

[分享] 我学VBA数组之三:单元格与数组双向赋值

  [复制链接]
发表于 2011-6-4 12:27 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2013-4-19 11:40 编辑

有了前面的基础,我们再来看下单元格赋值数组赋值
1、把单元格数据搬入内存
Sub test()

Dim arr
arr= [A1:B10]

arr= range(
a1:b10)

arr=sheet2.range(
a1:c500)

End sub
在这里只说一下,数组的定义或声明。
Dim arr as Variant '声明一个变量,这个变量是一个可以转化成数组的Variant类型(可以省略),不能声明其他数据类型
这种定义方式最为灵活,推荐使用。(好处以后再说)
2、把单元格数据搬入内存
range(单元格区域)=arr ,要想准确把arr数组元素赋给单元格区域,要特别注意arr数组维数和大小。
实例:求合计数。(合计=数量*金额)
QQ截图未命名.jpg
大家想想,都可以用什么方法?
先想想工作表中用函数怎么做?
1)在C2单元格输入公式=a2*b2,下拉填充。
2)选定C2:C11,在C2输入=A2*B2,CTRL+ENTER。
3)选定C2:C11, 在C2输入=A2:A11*B2:B11,CTRL+SHIFT+ENTER
VBA中,基本上也是这种思想:一种是循环赋值法,另一种是数组公式法。
[HIDE
]
  1. [/font][/align][align=left]Sub 方法1()
  2.   Dim arr                                      '声明一个变量用来盛放单元格数据
  3.   Dim x As Integer
  4.   arr = Range("a2:c11")                         '把单元格数据搬入到arr里,它有4列4行
  5.   For x = 1 To 10                               '通过循环在arr数组中循环
  6.     arr(x, 3) = arr(x, 1) * arr(x, 2)          '数组的第4列(金额)=第3列*第2例
  7.   Next x
  8.   Range("a2:c11") = arr                         '把数组放回到单元格中
  9. End Sub
  10. Sub 方法2()
  11.   Dim arr                                       '声明一个变量用来盛放单元格数据
  12.   arr = [a2:a11*b2:b11]                          '可以理解为数组公式法
  13.   [c2:c11] = arr
  14. End Sub[/align][align=left][font=仿宋_GB2312]
复制代码

[/HIDE]

评分

参与人数 4 +25 收起 理由
木牙水 + 3 赞一个!
wbzxz + 9 litus,太强啦。呵呵。
windimi007 + 1 期待楼主的下一讲!!!
9lee + 12 []的好处啊

查看全部评分

发表于 2011-6-4 12:40 | 显示全部楼层
回复

使用道具 举报

发表于 2011-6-4 12:40 | 显示全部楼层
回复

使用道具 举报

发表于 2011-6-4 12:40 | 显示全部楼层
下载学习!
回复

使用道具 举报

发表于 2011-6-4 13:17 | 显示全部楼层
城市学习来了{:912:}
回复

使用道具 举报

发表于 2011-6-4 15:30 | 显示全部楼层
追着学        
回复

使用道具 举报

发表于 2011-6-4 17:13 | 显示全部楼层
还没看完三,已经开始期待四了。
回复

使用道具 举报

发表于 2011-6-4 21:23 | 显示全部楼层
学习一下{:1612:}
回复

使用道具 举报

发表于 2011-6-4 23:49 | 显示全部楼层
和函数对照起来,学活了啊,真是不错。
回复

使用道具 举报

发表于 2011-6-5 21:03 | 显示全部楼层
学习啦,一起想要知道的
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-4 21:17 , Processed in 0.392552 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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