精华内容
下载资源
问答
  • 声明二维数组与一维数组一样,使用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)或者注明出处。

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

    展开全文
  • 下面的过程产生一个二维数组,储存国家名称,货币名称和交换汇率。Sub Exchange()Dim t As StringDim r As StringDim Ex(3, 3) As Variantt = Chr(9) 'tabr = Chr(13) 'EnterEx(1, 1) = "Japan"Ex(1, 2...

    既然你已经知道了如何有规划地产生一个清单(一维数组),是时候仔细看一下如何使用数据表了。下面的过程产生一个二维数组,储存国家名称,货币名称和交换汇率。Sub Exchange()

    Dim t As String

    Dim r As String

    Dim Ex(3, 3) As Variant

    t = Chr(9) 'tab

    r = Chr(13) 'Enter

    Ex(1, 1) = "Japan"

    Ex(1, 2) = "Yen"

    Ex(1, 3) = 128.2

    Ex(2, 1) = "Mexico"

    Ex(2, 2) = "Peso"

    Ex(2, 3) = 9.423

    Ex(3, 1) = "Canada"

    Ex(3, 2) = "Dollar"

    Ex(3, 3) = 1.567

    MsgBox "Country " & t & t & "Currency" & t & "per US$" _

    & r & r _

    & Ex(1, 1) & t & t & Ex(1, 2) & t & Ex(1, 3) & r _

    & Ex(2, 1) & t & t & Ex(2, 2) & t & Ex(2, 3) & r _

    & Ex(3, 1) & t & t & Ex(3, 2) & t & Ex(3, 3), , _

    "Exchange"

    End Sub

    当你运行过程Exchange时,你将看到一个信息框,显示三列信息(见图7-2)

    图7-2 显示在信息框上的文本是可以自定义格式的。

    数组的维数:

    Sub 数组示例():

    Dim x As Long, y As Long

    Dim arr(1 To 10, 1 To 3) '创建一个可以容下10行3列的数组空间

    For x = 1 To 4

    For y = 1 To 3

    arr(x, y) = Cells(x, y) '通过循环把单元格区域a1:c4的数据装进数组中

    Next y

    Next x

    MsgBox arr(4, 3) '根据提供的行数和列数显示数组

    arr(1, 2) = "我改一下试试"'你可以随时修改数组内指定位置的数据

    MsgBox arr(1, 2)

    End Sub

    总结:二维是由行和列表示的数组,如 ARR(3,2)表示数组中第3排第2列的元素。而一维数组只是由一个元素决定,如ARR(4)表示数组中第4个元素

    静态和动态数组

    到目前为止,本章介绍的都是静态数组。静态数组是具有确定大小的数组。当你事先知道数组的大小时使用静态数组。静态数组的大小是在数组的声明语句里确定的,例如,语句 DimFruits(10)AsString 声明了一个由10个成员组成的叫做 Fruits 的静态数组。

    但是,万一你不肯定你的数组会包含多少个成员呢?如果你的过程由用户输入决定,每次程序执行时,用户提供的成员数可能会变化的。你如果确保你声明的数组不会浪费内存呢?

    回想你声明了一个数组后,VBA 会留出足够的内存来储存数组。如果你声明一个比你需要的更多成员的数组的话,你将浪费计算机资源。这个问题的解决方法是让你的数组变为动态的。动态数组是大小可以改变的数组。如果数组的大小每次都由程序运行而决定的话,就使用动态数组。

    1.  在当前工程里插入一个新模块并且重新命名为 DynamicArrays

    2.  输入下列过程 DynArray:

    Sub DynArray( )

    Dim counter As Integer

    'declare a dynamic array

    Dim myArray( ) As Integer

    'specify the initial size of the array

    Redim myArray(5)

    Workbooks.Add

    'populate myArray with values

    For counter = 1 to 5

    myArray(counter) = counter +1

    ActiveCell.Offset(counter-1, 0).Value = myArray(counter)

    Next

    'change the size of myArray to hold 10 elements

    Redim Preserve myArray(10)

    'add new values to myArray

    For counter = 6 To 10

    myArray(counter) = counter * counter

    With ActiveCell.Offset(counter-1, 0)

    .Value = myArray(counter)

    .Font.Bold = TrueEnd with

    Next counterEnd Sub

    3.  将你的 Excel 窗口和 VB 编辑器窗口并排显示

    4.  逐步运行过程 DynArray。你可以将鼠标置于代码中间,并且按下F8来执行逐条语句。程序

    DynArray 的结果如下图所示。

    图7-3 显示10个数据的数组

    在过程 DynArray 里,Dim myArray() As Integer 语句声明了一个叫做 myArray 的动态数组。尽管该语句声明了数组,但是,没有分配任何内存给该数组。第一条 ReDim 语句明确了 myArray 的开始大小并且占据了10个字节的内存让它储存5个成员,正如你所知,每个整型数据需要两个字节的内存。

    语句 Workbooks.Add 打开一新工作簿,然后 For…Next 循环用数据填充数组 myArray 并且将数组的成员写入工作表。在循环开始之前,变量 counter 等于1。循环里的第一条语句:

    myArray(counter) = counter + 1分配数值2给 myArray 的第一个成员。第二条语句:

    ActiveCell.Offset(counter-1, 0).Value = myArray(counter)将 myArray 成员的值输入到当前单元格里。当前单元格为A1。因为变量 counter 等于1,所以上面的语句就等于:

    ActiveCell.Offset(1-1, 0).Value = myArray(1)或者

    ActiveCell.Offset(0,0).Value = myArray(1)上面的语句在单元格A1里输入数据。循环里面的语句被执行5次。VB在合适的工作表单元格里马输入数据并且进行到下一语句:

    ReDim Preserve myArray(10)通常,当你改变一个数组的大小时,你将失去该数组原来的所有数据。语句 ReDim 将数组重新初始化。然而,你可以将新成员加入到现存的数组里去,通过在语句 ReDim 后面带上关键字 Preserve。换句话说,关键字 Preserve 保证重新改变大小的数组不会弄丢现有的数据。如果你忽略它,新数组将会

    是空的。

    第二个 For…Next 循环给数组 myArray 的第六,第七,第八,第九和第十个成员赋值。这次,数组成员的数值是相乘的:counter * counter。VB使用粗体将数组其它的数值输入到合适的工作表的单元格里面。

    技巧:确定数组大小

    在使用数组之前,必须在 Dim 或 ReDim 语句里确定数组的大小。这意味着你不可以给数组成员赋值,直到你使用 Dim 或者 ReDim 语句声明了该数组。

    展开全文
  • 展开全部可通过 “ = ” ...在VBA中对变量进行赋值可通过 “ = ” 符号或 “ Set ” 关键字进行。通过 “ = ” 符号对变量赋值的语法格式有以下几种。变量名=数据变量1=变量2 运算符 数据变量1=变量2 运算符 变量3...

    展开全部

    可通过 “ = ” 符号或 “ Set ” 关键字进行赋值。

    变量在使用时还需要对其62616964757a686964616fe58685e5aeb931333433623761进行赋值。在VBA中对变量进行赋值可通过 “ = ” 符号或 “ Set ” 关键字进行。通过 “ = ” 符号对变量赋值的语法格式有以下几种。

    变量名=数据

    变量1=变量2 运算符 数据

    变量1=变量2 运算符 变量3 … 运算符 变量n

    如果在定义变量时指定了变量的数据类型,则为变量所赋的值也必须是该数据类型的值。如果变量定义为Integer类型,而在赋值时却给了变量一个String类型的数据,则在编译运行的过程中将弹出错误弹框。

    扩展资料

    VBA二维数组包括静态和动态数组。

    静态数组是具有确定大小的数组,当事先知道数组的大小时使用静态数组。静态数组的大小是在数组的声明语句里确定的,例如,语句DimFruits(10)AsString声明了一个由10个成员组成的叫做Fruits的静态数组。

    但是,万一不肯定数组会包含多少个成员,如果过程由用户输入决定,每次程序执行时,用户提供的成员数可能会变化的。

    VBA会留出足够的内存来储存数组,如果声明一个需要的更多成员的数组的话,将浪费计算机资源。

    这个问题的解决方法是让数组变为动态的。动态数组是大小可以改变的数组。如果数组的大小每次都由程序运行而决定的话,就使用动态数组。

    展开全文
  • 如何将下面的二维数组转为一维数组。$msg = array(array('id'=>'45','name'=>'jack'),array('id'=>'34','name'=>'mary'),array('id'=>'78','name'=>'lili'),);第一种方法:foreach($msg as $k =&...

    如何将下面的二维数组转为一维数组。

    $msg = array(

    array(

    'id'=>'45',

    'name'=>'jack'

    ),

    array(

    'id'=>'34',

    'name'=>'mary'

    ),

    array(

    'id'=>'78',

    'name'=>'lili'

    ),

    );

    第一种方法:

    foreach($msg as $k => $v){

    $ids[] = $id;

    $names[] = $name;

    }

    第二种方法:

    $ids = array_column($msg, 'id');

    $names = array_column($msg, 'name');

    以上两种解法print_r($names);后的结果为:

    Array(

    [0]=>jack

    [1]=>mary

    [2]=>lili

    )

    注意:array_column();可以有第三个参数,如 $n = array_column($msg, 'name', 'id');

    print_r($n);的结果为:

    Array(

    [45]=>jack

    [34]=>mary

    [78]=>lili

    )

    展开全文
  • VBA二维数组重定义

    2010-01-22 22:17:54
    VBA二维数组重定义,这是EXCEL精英培训网上的教程
  • 常用“积木”过程案例分享第303期,今日内容是将键和键值的一维数组转化为二维数组。提供给大家的这些内容是我多年经验的记录,来源于我多年的实践。大家在学习VBA的时候,可以把这些代码块作为一块块的积木对待,...
  • VBA编程知识点(12)——工作表转二维数组提高效率学习自杨洋老师《全民一起VBA》在excel中读取单元格的操作是最耗时的操作之一,把表格数据转换为二维数据,能够大大提高程序运行速度。声明二维数组dim a(4,5),最大...
  • = arr(i, 1): arr(j, 2) = arr(i, 2) arr(i, 1) = temp1: arr(i, 2) = temp2 End If Next arr(i, 2) = Format(arr(i, 2), "0.00") Next '转一维数组 temp1 = Excel.WorksheetFunction.Transpose(Excel....
  • VBA部分我们学习了VBA中涉及到的一些基本概念以及常见的语句结构,Range对象、Worksheet对象、Workbook对象,已经能解决比如单元格合并,工作簿、工作表的合并以及拆分等问题了。从本节开始,我们学习数组。一提到...
  • In Excel via Visual Basic, I am iterating through a CSV file of invoices that is loaded into Excel. The invoices are in a determinable pattern by client.I am reading them into a dynamic 2D array, then...
  • VBA++ 题记:一剪闲云一溪月,一程山水一年华。一世浮生一刹那,一树菩提一烟霞。岁月静好,现世安稳。纵算云水漂泊,心若安宁,亦可淡若清风。希望见者与不见者都能安康。静下心,多学习有用的知识,多提高自己的...
  • 源码:Sub Exchange()Dim t As StringDim r As StringDim Ex(3, 3) As Variantt = Chr(9) 'tabr = Chr(13) 'EnterEx(1, 1) = "Japan"Ex(1, 2) = "Yen"Ex(1, 3) = 128.2Ex(2, 1) = "Mexico"Ex(2, 2) = "Peso"Ex(2,...
  • VBA部分我们学习了VBA的一些基本语法和基本知识,Range对象、Worksheet对象、Workbook对象,已经能解决比如单元格合并,工作簿、工作表的合并以及拆分等问题了。从本节开始,我们学习数组,学习了数组后我们能做到的...
  • 节 将工作表数据写入VBA数组在上一节中我们讲了实现工作表数据与VBA代码间传输的几种方法,这讲我将我们将着重讲解如何将工作表的数据写入数组。1 读取工作表上的范围并将其放入数组VBA中,可以直接读取工作表...
  • 一维数组可以通过这样一行代码来整体赋值:arr = Array("你", "我", "他", "1", "2", "3", "aa", "bb", "cc")那么,如果想给二维数组采用类似的方法来整体赋值,要怎么办呢? arr=array("你", "我", "他" ;"1", "2...
  • 1 To 6) arr = Range("a1:F" & Row) arr = bubblesort(arr, 0, 2, 2) Range("j1:O" & Row) = arr End Sub 以下为VBA二维数组冒泡排序实例 Public Function bubblesort(ByRef snarray(), sort As Boolean, column As...
  • 大家好,后疫情时代一定会到来,各行各业,都将是一场战胜萧条的无声的战役。无论怎样,我们一定要坚信,疫情终将会过去,曙光一定会到来。后疫情时代将会是一个全新的世界,很多理念都将被...今日继续和大家分享VBA...
  • For i = 1 To UBound(varArr1) temvarArr1(i) = varArr1(i, 1) Next 这段代码把数据从二维数组赋值给一位数组 tem = Filter(temvarArr1, temvarArr2(1), False) '给TEM赋初始值.这句代码实现了给TEM的赋初始值,以...
  • 〇年的三月,本该是春暖花开的季节,但现在确实恐慌弥漫。PMI,CPI,M2,非农指标,一个个揪心的数据,股市震荡,信心不足,熔断频发。后疫情时代的资本市场是否开始布局?终将演绎一场战胜萧条的战役。无论怎样,...
  • 二维数组的嵌套并非三维数组 2 数组的嵌套写法 1维数组的嵌套:arr(m)(i) 2维数组的嵌套:arr(m)(i,j) Sub test1001() Debug.Print "测试一维数组和其嵌套" '一维数组 arr1 = Array(1, 3, 5, 7, 9) arr2 = ...
  • '针对一维数组和二维数组的元素互换位置,one_demision是true时一维数组,否则是二维数组二维数组互换行,这里不做列的互换 Sub SwapElement(ByRef arr As Variant, ByVal m As Long, ByVal n As Long, Optional ...
  • VBA编程知识点(12)——工作表转二维数组提高效率学习自杨洋老师《全民一起VBA》在excel中读取单元格的操作是最耗时的操作之一,把表格数据转换为二维数据,能够大大提高程序运行速度。声明二维数组dim a(4,5),...
  • 学习资源:《Excel VBA从入门到进阶》第20集 by兰色幻想一、什么是VBA数组VBA数组就是储存一组数据的数据空间,数据类型可以数字,可以是文本,可以是对象,也可以是VBA数组。有点像之前的Union:将多个非连续区域...
  • 在我们日常应用中,我们基本只用得到一维和二维数组,本文主要讲解这两种。一维数组中是一行多列数据,用逗号分隔。如下代码,我定义了一个数组,然后给数组赋值,再将数组的数据赋值给单元格中。二维数组其实就是一...
  • 大家好,上节介绍了在使用数组之前如何...以常用的二维数组为例,声明一个3*4的二维数组arr1,数据类型为字符串型。dim arr1(2,3) as string声明数组时省略下标,默认从0开始,所以第一维是0至2,第二维是0至3。数...
  • 这个是一个系列文章 大概有5篇文章,会持续去更新敬请期待一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。 机器人每次只能向下或者向右移动一步。...如何思考分析这是一类二维数...
  • 下面的过程产生一个二维数组,储存国家名称,货币名称和交换汇率。 Sub Exchange() Dim t As String Dim r As String Dim Ex(3, 3) As Variant t = Chr(9) 'tab r = Chr(13) 'Enter Ex(1, 1) = "Japan" Ex(1, 2) =...
  • 学习Excel技术,关注微信公众号:excelperfect数组是一种常用的数据结构,可用来存储一组相同类型的数据,你可以将一个数组...图1下图2所示的示例是一个名为MyArray的3×4二维数组,包含有12个元素,像不像一个电...

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 141
精华内容 56
关键字:

vba二维数组