vba数组,vba数组赋值给单元格区域

http://www.itjxue.com  2023-01-20 01:01  来源:未知  点击次数: 

如何在vba中声明数组

1、vba中使用Dim关键字声明数组,Dim关键字的后面是数组名称,名称之后要有括号,然后括号之后可以指明数组的长度,也可用to关键字指明范围,最后则是用as 关键字指明类型,具体的格式见下图:

2、下面用一个实例来说明用法,首先在表格中有6000个数值,筛选出大于90的数值将其复制至B栏或C栏,分别用两种方法来写代码,一种方法不含数组,另二种方法含有数组,比较两种方法的速度:

2、在Excel工作表中,点击菜单栏开发工具,在其工具栏内,点击visual basic:

3、此时会进入VBA编辑界面,点击菜单栏插入,在其下拉菜单中选择模块:

4、此时软件会弹出模块编辑窗口,这里就可以输入vba的代码:

5、在代码编辑窗口输入带数组和不带数组的两种代码,这里可以看到用Dim关键字声明了一个6000个元素的数组:

6、在工作表界面的开发工具菜单下,点击插入按钮插入表单控件,分别与两组代码关联:

7、点击筛选数据1按钮,即不含数组,程序运行的时间了13.4219秒:

8、点击筛选数据2按钮,即含数组的一组,程序运行的时间为0.0313秒,可以看到这种方法快多了吧:

VBA数组如何筛选?

Filter函数实现数组筛选:

数组的筛选就是根据一定的条件,从数组中筛选符合条件的值,组成一个新的数组,实现数组筛选的VBA函数是:

Filter函数

用法:Filter(数组,

筛选的字符,

是否包含)

Sub

DD()

arr1

=

VBA.Filter(arr,

"A",

True)

'筛选所有含A的数值组成一个新数组

arr2

=

VBA.Filter(arr,

"A",

False)

'筛选所有不含A的数值组成一个新数组

MsgBox

Join(arr2,

",")

'查看筛选的结果End

Sub遗憾的是函数只能进行模糊筛选,不能精确匹配。

VBA笔记:数组

声明1个1~50的数组,可以将区间值写出来

Dim SZ(1 To 50) As String

也可以用"个数"来标识,比如上述的 1 to 50 可以用 49 来替代(0~49的意思,总计50个数字)

Dim SZ(49) As String

我们还可以模块的开始,就设定好数组的索引值从1开始(1~50)

当数组声明好了之后,我们可以给数组赋值

比如,给数组的第15个元素赋值的方法如下:

SZ(14) = "100"

给一个数组集体赋值的方式:

VBA还支持 横向、纵向 同时存在的列表型数组,比如,我们声明一个3*20的数组

Dim SZ (1 to 3 , 1 to 20)

当然,也可以用个数来表示数组

假设,有4个高3层、宽5格的货架,用数组可以这样来表示

与单维数组的赋值方式一样

当无法确定数组的存储元素多少时,我们可以先声明一个空的数组:

Dim SZ ()

然后,再通过ReDim语句来重新声明数组的大小

数组内,参数间用英文逗号分隔,参数支持数字、文本

数组的索引号默认从0开始,除非在模块中的第1句已经写入了"Option Base 1"语句

数组内,参数间用英文逗号分隔,参数仅支持文本 (需要确认)

数组的索引号默认从0开始,无论是否已写入"Option Base 1"语句

可以把一个单元格区域的值存到数组里,也可以把数组里的值写到单元格里去 (单元格区域的大小必须一致)

通过UBound和LBound函数,可以计算数组的最大、最小索引号

UBound(arr) ‘返回数组的最大索引号

LBound(arr) ‘返回数组的最小索引号

UBound(arr) - LBound(arr) +1 ‘返回数组一共有多少个元素

如果是一个多位数组,还需要指定数组的维度,比如:

使用join函数,可以将数组里的所有元素,通过一个指定的拼接符号,拼成一个新的字串

使用range函数,可以将数组写入单元格、区域

无论1维数组还是2维数组,在写入单元格区域时,区域的大小,与数组的大小需要保持一致

excel vba中如何定义数组,并赋值

大家好,我们今日继续讲解VBA代码解决方案的第110讲内容:VBA数组讲解:什么是数组,如何定义数组,如何创建数组

一、什么是数组 就是数组共享一个名字,有着多个元素按顺序排列的变量。在数组中,元素通过索引加以区分。这里我把数组的元素看做变量来对待,大家要注意,这个观点在应用过程中是非常有意义的。

二、如何定义数组 声名数组同声明其他变量的方式一样,唯一不同的是数组有大小,即有多少个元素,或者说变量,还有就是要说明数组的维数。

如下面的代码:

Sub Mynzsmart()

Dim i As Integer, j As Integer

Dim arr(1 To 10, 1 To 2) As Integer '定义一个10*2的二维数组(10行,2列)

j = 1 '数组1 to 10的索引号

For i = 1 To 20 Step 2

arr(j, 1) = i '赋值

arr(j, 2) = i + 1 '赋值

j = j + 1 '索引号增加

Next

[a1:b65536].Clear '清除原有数据

[a1].Resize(10, 2) = arr '将数组赋值给A1单元格向下10行,向右2列的区域

End Sub

代码截图:

运行后:

三、动态数组

在上面的讲解中我们知道,声明一个数组,必须指定数组的大小,即它是几维数组,有多少个元素。但有些时候,我们在定义数组的时候,并不能确定数组的大小,这时,我们在首次定义数组的时候括号内为空(当然先指定一个大小也是可以的,但纯属是多余),在程序过程中用Redim语句去重新指定数组的大小,这就是动态数组。

比如一个工作表的C列存储了学生姓名,现在我们需要把把有姓“王”的学生存储在数组arr中,预先我们并不知道C列姓王的学生有三十个还是五十个,所以,我们在定义时代码可以这样:

代码:

Sub MyNZsmarttwo()

Dim i%, xrow%, j%, xcount%

Dim arr() As String

erow = [c65536].End(3).Row '最后一个非空单元格行号

j = 1 '数组索引号

xcount = Application.WorksheetFunction.CountIf([c1:c65536], "王*") '统计有多少姓王的学生

ReDim arr(1 To xcount) '重新定义数组大小,元素共有xcount个

vba数组怎么赋值?

工具/材料:Microsoft Office Excel2016版,Excel表格。

1、首先选中Excel表格中要数组赋值的单元格内容。

2、然后在该界面中,点击“插入”里“表单控件”里“按钮”选项。

3、再者在该界面中,在表格中生成按钮控件,修改控件名称。

4、其次在该界面中,点击“查看代码”选项。

5、继续在VBA界面中,输入定义一维数组的语句。

6、然后在VBA界面中,输入给单元格赋值一维数组的语句。

7、最后在该界面中,单元格里成功显示数组赋值结果。

VBA数组的定义与赋值

可直接定义,但是不能直接赋值,可参考以下代码:

1、Dim arr(1 to 3) as string

如此定义,但是不能直接给数组赋值

如果想直接给数组直接赋值,需要如下操作:

Dim arr() as Variant

arr=Array("a","b","c")

2、Dim A As Variant

A = Array(10,20,30)

B = A(2)

array函数返回的是变体型,要用该函数是不能给数组变量赋值

扩展资料:

VBA的常用内置函数:

MsgBox

InputBox

舍入函数:Fix 向0取整,Int向下取整, Round四舍五入

Rnd: 返回0-1内的单精度随机数

字符串函数:

Filter:对字符串的一维数组的过滤

InStr([Start, ]Str1,Str2[, Compare])与InStrRev: 查找子串

Len:字符串长度

Join:连接一维数组中的所有子字符串

Left,Right,Mid: 截取子字符串

Space(数值) :生成空格字符串

Ucase,Lcase:大小写转换函数

Ltrim, Rtrim,Trim :删除首尾空格

Replace

Split:分割一个字符串成为一维数组

StrComp:字符串比较

StrConv:字符串转换

String(number, character):制定字符重复若干次

参考资料来源:百度百科-VBA (Visual Basic宏语言)

(责任编辑:IT教学网)

更多

推荐鼠标代码文章