excel vba数组入门教程

excel vba数组入门教程

ID:14050698

大小:45.50 KB

页数:15页

时间:2018-07-25

excel vba数组入门教程_第1页
excel vba数组入门教程_第2页
excel vba数组入门教程_第3页
excel vba数组入门教程_第4页
excel vba数组入门教程_第5页
资源描述:

《excel vba数组入门教程》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、ExcelVBA数组入门教程1.前言:不要把VBA数组想的太神秘,它其实就是一组数字而已。2.数组的维数:Sub数组示例() DimxAsLong,yAsLong Dimarr(1To10,1To3) '创建一个可以容下10行3列的数组空间 Forx=1To4   Fory=1To3      arr(x,y)=Cells(x,y) '通过循环把单元格区域a1:c4的数据装进数组中   Nexty Nextx MsgBoxarr(4,3)'根据提供的行数和列数显示数组 arr(1,2)="我改一

2、下试试"'你可以随时修改数组内指定位置的数据 MsgBoxarr(1,2)EndSub总结:二维是由行和列表示的数组,如ARR(3,2)表示数组中第3排第2列的元素。而一维数组只是由一个元素决定,如ARR(4)表示数组中第4个元素3.把单元格数据搬入内存:一、声明:         DimarrasVariant '声明一个变量,不能声明其他数据类型          Dimarr(1to10,1 to 2),这种声明也是错误的,固定大小的VBA数组是不能一次性装入单元格数据      或:di

3、marr()   这种声明方式是声明一个动态数组,也可以装入单元格区域,构成一个VBA数组。 二、装入         arr=range("a9:c100")  '装入很简单,变量=单元格区域 三、读出         装入数组后的单元格数值,可以按数组名称(行数,列数)直接读取该位置的值,如下面的代码。         Msgbox arr(3,2)  '就可以取出搬过去的而构成的数组第3行第2列的内容 四、示例 Subs3()   Dimarr()'声明一个动态数组(动态指不固定大小)  

4、Dimarr1 '声明一个Variant类型的变量  arr=Range("a1:c7")  '把单元格区域A1:C7的值装入数组arr  arr1=Range("a1:c7")  '把单元格区域A1:C7的值装入数组arr1  MsgBoxarr(1,1)  '读取arr数组中第1行第1列的数值  MsgBoxarr1(2,3) '读取arr1数组的第2行第3列的数值EndSub4.把单元格数据搬入内存:Subtest() Dimarr    '声明一个变量用来盛放单元格数据 DimxAsIn

5、teger arr=Range("a2:d5")    '把单元格数据搬入到arr里,它有4列4行 Forx=1To4    '通过循环在arr数组中循环   arr(x,4)=arr(x,3)*arr(x,2)     '数组的第4列(金额)=第3列*第2例 Nextx Range("a2:d5")=arr    '把数组放回到单元格中EndSubSubtest1() Dimarr(1To5)'声明一维数组 Forx=1To5   arr(x)=x*2 '通过循环给每个位置赋值 Nextx R

6、ange("A1:E1")=arr '把数组导入到excel中的a1:e1单元格中 Range("A1:A5")=Application.Transpose(arr)'如果是放在一列中,就需要对数组进行转置后再存放EndSub5.动态数组的声明:Subdarr() Dimarr() '声明一个动态的arr数组(不知道它能盛多少数据) Dimk k=Application.WorksheetFunction.CountIf(Range("a2:a6"),">10")'计算大于10的个数 ReDim

7、arr(1Tok) '再次声明arr的大小,正好盛下k数量的值 Forx=2To6   IfCells(x,1)>10Then     m=m+1     arr(m)=Cells(x,1) '通过循环把大于10的数字装入数组   EndIf Nextx MsgBoxarr(2)EndSub6.动态数组的声明:   arr(-19to8) 这个数组的编号就是从-19开始的.那么它的最小编号就是-19,最大编号是8,如果用语句返回就是:  Subt1()    Dimarr(-19To8)    

8、MsgBoxUBound(arr)'返回最大编号,结果为8    MsgBoxLBound(arr)'返回最小编号,结果为-19 EndSub如果是有行列组成的二维数组呢?二维数组返回行的下标和列的下标见下例      Subt2()       Dimarr(-19To8,2To5)    MsgBoxUBound(arr)'返回第1维(行的)最大编号,结果为8    MsgBoxLBound(arr)'返回第1维(行的)小编号,结果为-19    MsgBoxUBound(arr,2)'返回

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。