精华内容
下载资源
问答
  • 声明二维数组与一维数组一样,使用Dim语句来声明二维数组。例如,语句Dim myArray(3,7) AsInteger声明了一个名为myArray的包含4行8列共32个元素的二维整型数组,如图1所示。 图1也可以使用以下语句,使myArray数组的...

    VBA可以定义多达60维的数组,但实际上很少使用三维以上的数组。本文主要讲解二维数组及其使用。

    声明二维数组

    与一维数组一样,使用Dim语句来声明二维数组。例如,语句

    Dim myArray(3,7) AsInteger

    声明了一个名为myArray的包含4行8列共32个元素的二维整型数组,如图1所示。

    113254680_1_20171013064310532  图1

    也可以使用以下语句,使myArray数组的下标索引值从1开始。

    Dim Arr(1 To 4, 1 To8) As Integer

    声明一个4行8列的二维数组。

    声明二维数组的方式

    ① Dim数组名(数字,数字) As数据类型

    ② Dim数组名(数字,数字)

    各部分的说明与上篇文章相同。(注,谢谢doubao朋友在上篇文章中指出的歧义;数组名后的数字定义了数组最大下标索引值,这个数字可能该维的最大元素数,这取决于Option Base语句)

    给二维数组赋值

    下面的过程给二维数组myArray赋值:

    Sub testMyArray()

    Dim myArray(3, 7) As Integer

    Dim i As Integer, j As Integer

    For i = 0 To 3

    For j = 0 To 7

    myArray(i, j) = i * j

    Next j

    Next i

    End Sub

    运行程序后,数组myArray中各元素的值如图2所示。

    113254680_2_20171013064310642 图2

    获取二维数组元素的值

    如图3所示,可以看出数组myArray的第2行第3列的元素的值为2。

    113254680_3_20171013064310782 图3

    可以使用myArray(1, 2)来获取其值,如下面的过程:

    Sub testMyArray1()

    Dim myArray(3, 7) As Integer

    Dim i As Integer, j As Integer

    For i = 0 To 3

    For j = 0 To 7

    myArray(i, j) = i * j

    Next j

    Next i

    MsgBox '数组myArray的第2行第3列元素的值是: ' & _

    'myArray(1,2) = ' &myArray(1, 2)

    End Sub

    运行代码后的结果如图4所示。

    113254680_4_20171013064310892 图4

    由于默认下标索引值基于0开始,因此第2行的元素下标索引值是1,第3列元素下标索引值是2。

    注意,如果下标超出了数组范围,则会出现运行时错误:下标越界。

    二维数组的下限与上限

    可以使用LBound函数和UBound函数来确定二维数组的下限和上限,即二维数组各维的下标的最小索引值和最大索引值。例如,下面的过程:

    Sub testMyArray2()

    Dim myArray(3, 7) As Integer

    Dim i As Integer, j As Integer

    Dim k As Integer, str As String

    For i = 0 To 3

    For j = 0 To 7

    myArray(i, j) = i * j

    Next j

    Next i

    For k = 1 To 2

    str = str & '数组myArray的第' & k &'维的下限是: ' &LBound(myArray, k)

    str = str & '上限是: ' &UBound(myArray, k) & vbCr & vbCr

    Next k

    MsgBox str

    End Sub

    运行后的结果如图5所示。

    113254680_5_20171013064310970 图5

    可以看出,在LBound函数和UBound函数中,第1个参数为数组名称,第2个参数指定数组的维数。

    本文简要介绍了二维数组的基本操作,下一篇文章将重点讲解二维数组在工作表中的应用。

    相关链接:

    本文属原创文章,转载请联系我(xhdsxfjy@163.com)或者注明出处。

    欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

    展开全文
  • 之前讲过python操作excel,但是如果你所有操作都在excel中,...今天来点VBA的基础和常用知识:Option Explicit'强制定义变量类型Option Base 1 '数组下标从1开始'声明变量及类型,类型可省略dim i as Integer,str as...

    08736c767c245ee28d63fa7a93c91525.png

        之前讲过python操作excel,但是如果你所有操作都在excel中,那就不需要费劲了,excel的二次开发语言VBA更简单易学,使用非常方便。一起来学习吧,提高工作效率。

        今天来点VBA的基础和常用知识:

    Option Explicit'强制定义变量类型Option Base 1 '数组下标从1开始'声明变量及类型,类型可省略dim i as Integer,str as Stringdim rng as Range'声明常量Const pi as single=3.1415'变量赋值[let] i=1 'let可省略' 对象赋值set sheet=Worksheets(1)set rng=Worksheets("Sheet1").Range("A1")rng.value="VBA"'定义一维数组dim Array_test (1 to 10) As Doubledim Array_test1 (9) As Double '0-9for i=1 to 10   Array_test(i)=i   Next'定义二维数组dim arr2(2,5) as Double'定义动态数组dim arr1() as IntegerRedim arr1(2,5) as Integer '重新制定大小'数组生成Arr=Array(1,2,3,4,5,6)Arr=Split("你,今,天,开,心,了,吗",",")Arr=Range("A1:A10").Value'数组使用UBound(Arr)'数组的最大索引LBound(Arr)'数组的最小索引UBound(Arr)-LBound(Arr)+1  '数组元素的个数'多维数组需要指定维度 Ubound(Arr,2)'Join函数将数组内容按指定符号连接Arr=Array(1,2,3,4,5,6)txt=join(Arr,"_")'数据写入单元格Range("A1").Value=10Range("A1:B10").Value="12"Range("A1:A6").Value=Application.WorksheetFunction.Transpose(Arr)'一维列表赋值给列单元需要转置Range("A5:B6")=""'单元格的颜色Range("B1").Interior.Color=RGB(255,255,0)'对象引用方法Application.Workbooks('Book').Worksheets('Sheet1').Range('A2').value'判断if  a>0 ThenElseif  a<0 Thenelse...End If'循环for i=1 to 10 Step 1[Exit For]Next [i]Do [While 逻辑表达式]  [Exit Do]Loop'对所有sheet循环For Each sht In Worksheets  sht.NameNext'过程及函数Function fun(var,arr)Application.Volatile True '易失性函数,数据更新后,自动重算...NextSub test()...end sub'注释Rem==========
    展开全文
  • VBA二维数组定义

    2010-01-22 22:17:54
    VBA二维数组定义,这是EXCEL精英培训网上的教程
  • 24. 三维数组如何表示?答:类似c[6][8][1],{{{1,2},{3,4}},{{5,6},{7,8}}} ,array(1 to 20,1to 30,1 to 50),25....二维数组多用来储存平面信息,比如图片就是一种二维数组的体现;而三维数组可以储存空间信息...
    9aef9e865a194ff16d5344314ba42f94.png

    24. 三维数组如何表示?

    答:类似c[6][8][1],{{{1,2},{3,4}},{{5,6},{7,8}}} ,array(1 to 20,1to 30,1 to 50),

    25. 一维数组、二维数组和三维数组在存储数据方面有何区别?

    答:通常情况下,一维数组只能储存线性发展或组织的数据,如某个值随时间的变化;

    二维数组多用来储存平面信息,比如图片就是一种二维数组的体现;而三维数组可以储存空间信息和更复杂的时空信息,比如视频就是一种三维数组的体现。而随着数组维数的增加,数组本身的复杂度也相应提升,所以需要对信息的维度有着准确的把握,在满足需求的情况下,尽量使用低维度的数组。

    26. 数组有何优点?

    答:简而言之共两个优点:

    1)加快程序执行速度。

    2)简化代码功能。

    27. 数组按存储类型分几种?

    答:按储存类型划分:静态数组、动态数组、常量数组

    28. 什么是常量数组?

    答:指由常量组成的数组,如:arr =Array(1, 2, 3, 4, 5),数组Arr就是一个常数数组,他有5个常数元素。

    29. 什么是静态数组?

    答:顾名思义,就是数组的区域大小是固定不变的,一旦超出这个区域就会提示错误。Dim arr(1 To 10, 1 To 2) ,这个就是声明arr是一个10行2列的二维数组,一旦超出这个区域输入输出数据就会提示错误,如下图所示:

    576989690a9ed33ca5a97eb08ad4ad87.png

    30. 什么是动态数组?

    答:指区域大小不固定的数组,即元素数量不固定的数组,也就是说这个数组的上限值是不固定。在以后的工作当中,用的最多的就是动态数组,也就是可变数据类型Variant。

    31. 动态数组如何声明?

    答:动态数组的声明方法和静态数组声明的方法稍有不同,动态数组是需要先用Dim声明是动态数组,当数组大小一旦被确认了,还需要再次用Redim进行二次声明。

    32. dim a(3,4) as integer是什么意思?

    答:指定义一个整形数据类型的二维数组

    33. dim a(3)是什么意思?

    答:指没有被定义数据类型的一维数组,默认为变体型。


    34. dim a() as integer 是什么意思?

    答:定义一个空整形的动态数组,在以后的到代码中可以重新定义为静态数组,例如:redim a(5,6),这就是动态数组声明的两个步骤,请看下图:

    a24e960aa0a09e00d9c8ab4c45a7e42e.png

    35. 声明动态数组需用注意的事项是什么?

    答:

    1. 如果动态数组需要随某个变量进行不断的扩充(减少),那么数组就需要多次进行声明,每扩充(减少)一次就声明一次;
    2. 如果数组是多维的,只能动态声明最末维的,如果需要把让第一维不断扩充,还需要先转置,这个处理方法比较麻烦,在我们以后会说到这个的处理方法,在这里先请熟记上面的知识点。
    展开全文
  • 在我们日常应用中,我们基本只用得到一维和二维数组,本文主要讲解这两种。一维数组中是一行多列数据,用逗号分隔。如下代码,我定义了一个数组,然后给数组赋值,再将数组的数据赋值给单元格中。二维数组其实就是一...
    任何编程语言都离不开数组的应用,同样的,VBA也不例外,今天给大家讲讲数组的一些知识。什么是数组?数组其实就是一组数据,存在于我们的内存中,我们看不到。在我们日常应用中,我们基本只用得到一维和二维数组,本文主要讲解这两种。15d364a10884f6adf55058745642ec23.png

    一维数组中是一行多列数据,用逗号分隔。

    如下代码,我定义了一个数组,然后给数组赋值,再将数组的数据赋值给单元格中。

    f17248e2649a5d747b47fa6ec96ed301.png

    784b5443853845499f267ba4234d7e47.png

    二维数组其实就是一组多行多列的数据。如下代码,我定义了一个4行4列的数组,然后给数组部分元素赋值,再将数组整体赋值到单元格。

    e11549ad6debd2a191be64b1c99e53e4.png

    注意:arr(1 To 4, 1 To 4)  中,第一个参数的1 to 4,1代表数组的上界,4代表数组的下界,可以用对应的函数求出数组的上下界,上界到下界也就是数组的范围。

    5b295c3234afd74fca3f3070fd9c4661.png

    Lbound    上界Ubound    下界如下代码:

    我定义了一个二维数组arr,一个一维数组brr,然后将arr,brr的上下界赋值到arr中,然后将arr数据赋值到A1:B4单元格区域。

    我们可以发现,无论是一维数组,还是二维数组,他的上界都是第一个参数的上界,下界都是第一个参数的下界。而一维数组是一行多列的数据,所以上下界就是列的上下界,二维数组的上下界就是行的上下界。

    476fa96c93787effa0146e292dbbaf6f.png
    Sub arrtwo()    Dim arr(1 To 4, 1 To 2)    Dim brr(2 To 10)    arr(1, 1) = "arr的上界"    arr(1, 2) = LBound(arr)    arr(2, 1) = "arr的下界"    arr(2, 2) = UBound(arr)    arr(3, 1) = "brr的上界"    arr(3, 2) = LBound(brr)    arr(4, 1) = "brr的下界"    arr(4, 2) = UBound(brr)    Range("A1:B4") = arrEnd Sub
    注意:如果在数组中,我们没有指定范围,数组默认的第一个标记是0,不是1。一维数组的第一个元素是arr(0),二维数组的第一个元素是arr(0,0)

    4c52b2e090d05e63649b0c64b724a5ee.png

    Sub ExChanDate()     Dim arr(), brr()     arr() = Range("A1:A4").Value       brr() = Range("B1:B4").Value      Range("A1:A4") = brr()       Range("B1:B4") = arr()  End Sub

    代码解析:

    第2行:定义两个数组

    第3-4行:分别将A1:A4数据,B1:B4数据赋值给arr,brr两个数据

    第5-6行:将arr,brr数组的数据分别赋值给B1:B4,A1:A4,实现数据的交换

    2b825a543312c06041dbb8096d898d73.gif

    注意:此处虽然我没有申明数组的上下界,但是此处数组上界是1,将单元格中的数据赋值给数组时,上界都是1,且都为二维数据。

    也就是说,将单元格中的数据赋值给数组时,无论是一行,还是一列,赋值到数组中时,都是二维数组。

    如以下代码:

    我将单元格中的一行数据赋值给arr(),我再给arr()中单个元素赋值时,第一项数据是arr(1,1),第二项数据是arr(1,2),而不是arr(1),arr(2),这是因为arr()在此处是二维数组。
    Sub test()    Dim arr()     arr() = Range("A1:D1").Value     arr(1, 1) = 1                '此处不能用arr(1),因为arr()是二维数组    arr(1, 2) = 2     Range("A1:D1") = arr End Sub

    b4079b61e43589cb6cd993cb9a46f9ae.png

    2211daf05e28a755d63b96d126f007c2.png

    1)大大加快运行代码速度,特别是在循环中,利用数组进行运算会比直接引用单元格快很多。

    2)增加代码的可读性

    3)便于修改代码

    本文是一些数组的基本用法,希望同学们能够理解,在之后的一些文章中,进行数据处理时,大部分都会使用到数组。到时候再带领大家深刻认识数组的一些用法。本文就到这啦,如果文章对你有用的话,点个在看或者分享给你的朋友,大家一起学习吧ed5f6746c0253a273430340b75be0b10.png

    展开全文
  • Part 1: 数据的类型变量的定义(Dim等)。定义变量的时候可以同步定义变量的数据类型数据类型包括:整型integer,布尔Boolean,双精度浮点型Double,字符串String,变体型Variant等数据类型决定了变量在内存中的存储...
  • 大家好,今天我们继续讲解VBA数组与字典解决方案的第12讲,从这讲开始我们开始讲数组的运算了。通过之前的讲解,我了解了数组定义数组的性质,一些重要的知识点我们再回顾一下:a) 在数组的录入时需要三键输入。...
  • 大家好,今天我们继续讲解VBA数组与字典解决方案的第12讲,从这讲开始我们开始讲数组的运算了。通过之前的讲解,我了解了数组定义数组的性质,一些重要的知识点我们再回顾一下:a) 在数组的录入时需要三键输入。...
  • 使用VBA数组

    2020-03-10 11:29:25
    通过数组可以大大提高效率 通过代码来理解VBA中数组 1 '定义一维数组并赋值 Sub test() Dim arr(1 To 4) ...'定义二维数组并赋值 Sub test1() Dim arr(1 To 4, 1 To 2) arr(1, 1) = "张三" arr(1, 2) = 30 ...
  • 数组中的每一个值被称为数组元素,每一个数组元素都有一个编号(即索引,也可以称为下标),从0开始到数组长度-1为止、一维数组理论的东西,我就不单独拎出来写了,我拿一个基操案例,来把一维数组讲解一下sub ...
  • 数组中的每一个值被称为数组元素,每一个数组元素都有一个编号(即索引,也可以称为下标),从0开始到数组长度-1为止、一维数组理论的东西,我就不单独拎出来写了,我拿一个基操案例,来把一维数组讲解一下sub ...
  • 关于二维数组Redim Preserve: 如果使用了Preserve关键字,就只能重定义数组最末维的大小,且根本不能改变维数的数目。 具体参考 1 如果使用了 Preserve 关键字,就只能重定义数组最末维的大小,且根本不能...
  • 【说明】 ...(中间不能有空格),定义维数组Arr_approver() Dim R_sh As Worksheet Set R_sh = ThisWorkbook.Sheets("result") approver_row = R_sh.Range("B2").End(xlDown).Row Arr...
  • 以前一直搞不明白,VBA中的数组到底是什么,尤其是数组中的维度问题,更是感觉乱的很,总搞不清楚维度到底是按行定义还是按列定义,比如myArr(1 to 5, 1 to 3)数组,它是几维的?...二维数组(先定义行,后定...
  • Office Excel VBA编程

    2009-07-14 13:54:00
    本文涉及到的内容包括VBA数组、从单元格读取值填充二维数组、取excel文件的有效行、多文件合并等内容。...由于文件2、文件3等文件的文件名不固定,因此,需要定义二维数组,在数组中动态识别文件名
  • 将所有的实例归入基础相关、控制AutoCAD环境、创建和编辑二维对象、对象特性、文字、标注和公差、块和属性、处理AutoCAD中的事件、三维空间的操作、打印、高级绘图组织、使用组件扩展程序功能、和Excel交换数据、...
  • connector-odbc输出的数组首行为表头'从Mysql中取数并转换为二维数组Public Function GetMySQlArr(ByVal SQLStr As String)Dim TempArr, AimArrDim i As Long, r As LongDim CN As ADODB.Connection '定义数据链接...
  • 1. 知识点为dim arr2(1 to 1000, 1 to 4)先定义一个足够大的二维数组,不然后面需要transpose转置成一维数组。 1 '抽取列表中叫“虹虹”的所有信息,设置arr2数组1到1000,可以省略转置步骤 2 Public Sub ...
  • 01定义结构目标是要把customUI.xml解析为二维数组,数组的第0行记录的是属性,第一列记录的是元素,其他地方存储的是属性的值。同时因为xml本身是树形结构的,所以同时也记录下这些信息,这里使用左孩子右兄弟的结构...
  • 文章目录VBA基础一.了解VBA1.进入vba2.认识宏二. VBA编程1.hello world2....二维数组11.操作单元格自定义vba脚本生成sql 最近公司有个需求,提前让数据库表结构在excel模板中设计,然后再建对应的数据库DB。字
  • Excel_VBA教程

    2014-09-22 11:36:34
    6.使用二维数组 136 7.静态和动态数组 137 8.数组函数 139 9.ARRAY函数 139 10.ISARRAY函数 140 11.ERASE函数 140 12.LBOUND函数和UBOUND函数 141 13.数组中的错误 141 14.数组作为参数 143 15.接下来… 143 第八章 ...
  • MicroStation VBA创建直线的三种方法

    千次阅读 2008-11-24 23:58:00
    ----------------------------------------- 使用二维数组点创建直线 CreateLineElement1() ----------------------------------------- Sub CreateLine1() 定义一个点数组以及一个元素变量 Dim pntLine(0 To
  • ExcelVBA程序设计.doc

    2011-04-05 21:32:51
    6.使用二维数组 136 7.静态和动态数组 137 8.数组函数 139 9.ARRAY函数 139 10.ISARRAY函数 140 11.ERASE函数 140 12.LBOUND函数和UBOUND函数 141 13.数组中的错误 141 14.数组作为参数 143 15.接下来… 143 第八章 ...
  • Excel VBA 基础教程

    2019-01-01 18:51:06
    一、VBA语言基础...................................................................................................................1 第一节 标识符..........................................................
  • Dim row(0 To 20, 0 To 20) As String '定义一个21*21的二维数组 Range("A1").Select '选定A1单元格 For i = 0 To 20 For j = 0 To 20 row(i, j) = ActiveCell.Offset(i, j).Value '把A1位移(i,j)个单元格的...
  • EXCEL编程VBA高级教程

    2015-04-16 11:40:55
    第五节数组........................................................................................................................................2 第六节注释和赋值语句...................................
  • Redim preserve

    2012-11-20 11:06:19
    数组是包含相同数据类型的一组变量的集合,对数组中的单个变量引用通过数组索引下标进行。在内存中表现为一个连续的内存块,必须...二维数组是按行列排列,如XYZ(行,列)。 除了以上固定数组外,VBA还有一种功能强...
  • • 使用两个一维数组构造二维数组 • 部门评价等级转换 • 使用MMULT 函数计算产品结构指数 • 产生1-10 的自然数垂直序列和水平序列 • 等比例构造一维循环数组 • SUMIF函数对产品产量进行逐行汇总 • 利用MMULT...
  • │ 技巧136 用二维表创建数据透视表.xls │ 技巧137 组合数据透视表内的日期项.xls │ 技巧138 快速统计重复项目.xls │ 技巧139 在数据透视表中添加计算项.xls │ ├─第4篇-函数导读 │ ├─第14章 函数...

空空如也

空空如也

1 2
收藏数 31
精华内容 12
关键字:

vba定义二维数组