什么是Excel中的VBA数组以及如何编程


VBA多年来一直是Microsoft Office套件的一部分。尽管VBA没有完整的VB应用程序的全部功能和功能,但VBA为Office用户提供了灵活的功能,可以集成Office产品并使您在其中进行的工作自动化。

最强大的工具之一在VBA中可用的功能是能够将整个数据范围加载到称为数组的单个变量中。通过以这种方式加载数据,您可以通过多种方式对数据范围进行操作或执行计算。

那么VBA阵列是什么?在本文中,我们将回答该问题,并向您展示如何在您自己的VBA脚本 中使用一个。

什么是VBA阵列?

使用VBA Excel中的数组非常简单,但是如果您从未使用过数组,则了解数组的概念可能会有些复杂。

想一想数组,就像一个里面有节的盒子。一维数组是具有一行截面的框。二维数组是具有两行截面的框。

<图类=“ lazy aligncenter size-large”>

您可以按任意顺序将数据放入此“框”的每个部分。

<!-
In_content_1全部:[300x250] / dfp:[640x360]
->

在VBA脚本的开头,您需要通过定义VBA数组来定义此“框”。因此,要创建一个可以容纳一组数据的数组(一维数组),您需要编写以下行。

Dim arrMyArray(1 To 6) As String

稍后在程序中,您可以放置

arrMyArray(1) = "Ryan Dube"

您可以使用以下行来创建二维数组。

Dim arrMyArray(1 To 6,1 to 2) As Integer

第一个数字代表行,第二个数字代表列。因此,上面的数组可以容纳6行2列的范围。

您可以按以下方式向该数组的任何元素加载数据。

arrMyArray(1,2) = 3

这样会将3加载到单元格B1中。

一个数组可以将任何类型的数据作为常规变量保存,例如字符串,布尔值,整数,浮点数等等。

括号内的数字也可以是变量。程序员通常使用For循环来遍历数组的所有部分,并将电子表格中的数据单元加载到数组中。您将在本文后面看到如何执行此操作。

如何在Excel中编程VBA数组

让我们看一个可能要在其中加载信息的简单程序从电子表格到多维数组。

让我们看一个产品销售电子表格,您要在其中从电子表格中提取销售代表的姓名,商品和总销售额。

<图class =“ lazy aligncenter size-large”>

请注意,在VBA中,当您引用行或列时,您会从左上角1开始计数行和列 。因此rep列为3,item列为4,total列为7。

要在全部11行中加载这三列,您需要编写以下脚本。

Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i

您会注意到,要跳过标题行,第一个For look中的行号必须以2而不是1开头。这意味着在加载数组行值时需要减去1。单元格值使用Cells(i,j).Value。

在哪里插入VBA数组脚本

要在Excel中放置VBA脚本程序,您需要使用VBA编辑器。您可以通过选择Developer菜单,然后在功能区的“控制”部分中选择查看代码来访问它。

如果菜单中未显示“开发人员”,则需要添加它。为此,请选择文件选项以打开“ Excel选项”窗口。

将选择命令从下拉菜单更改为所有命令。从左侧菜单中选择Developer(开发人员),然后选择Add(添加)按钮将其移至右侧窗格中。选中复选框以启用它,然后选择确定完成。

“代码编辑器”窗口打开后,确保在左窗格中选择了数据所在的表。在左侧下拉列表中选择工作表,然后在右侧选择激活。这将创建一个名为Worksheet_Activate()的新子例程。

只要打开电子表格文件,该函数就会运行。将代码粘贴到该子例程内的脚本窗格中。

<图类=“ lazy aligncenter size-large”>

此脚本将遍历12行,并从第3列加载销售代表名称,从第4列加载销售代表商品,并从第7列加载总销售额。

一旦两个For循环都完成,则二维数组arrMyArray包含您从原始工作表中指定的所有数据。

在Excel VBA中操作数组

假设您要对所有最终售价应用5%的营业税,然后将所有数据写入新工作表。

您可以在第一个工作表之后添加另一个For循环,并使用命令将结果写入新工作表中。

For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k

这会将整个数组“卸载”到Sheet2中,另外一行包含总计乘以税额的5%。

div>

如您所见,Excel中的VBA数组非常有用,而且功能与其他任何Excel技巧 一样通用。

上面的示例非常简单地用于数组。您可以创建更大的数组,并对存储在其中的数据执行排序,求平均或执行许多其他功能。

如果您想获得真正的创意,甚至可以创建两个数组包含一系列细胞 从两个不同的工作表开始,并在每个数组的元素之间执行计算。

应用程序仅受您的想象力限制。

0503 VBA编程思想

相关文章:


18.01.2020