如何在Excel VBA中重新定义保留二维数组(2种简单方法)

  • Share This
Hugh West

数组是一个保持相同种类数据的变量。 如果只有一行或一列数据,那么它被称为一维数组。 然而,当有多于一行和一列时,它被称为二维数组。 我们用 润物细无声 在VBA中调整一个数组的大小。 此外,我们使用 保全 关键字与 润物细无声 这篇文章将告诉你 2 快速的方法来" 保护区 " a 二维阵列 Excel VBA .

下载实践工作手册

ReDim Preserve 2D.xlsm的宏程序

在Excel VBA中使用2种方便的方法来保存2D阵列的ReDim

这是由 "中国 "创建的基本数据集。 二维阵列 有三行两列。 首先,我们将创建这个数组。 然后,我们将向这个数组添加另一列。 我们将使用" 保护区 "此外,我们将演示如果我们不使用这个会发生什么。

默认情况下,我们只能调整数组的最后一个维度(即列或上界)。 我们将对数组进行转置,然后改变最后一个维度,然后再次转置以调整数组的两个维度。 二维阵列 在Excel VBA中。

1.ReDim保留最后一维二维阵列

我们将首先定义 二维阵列 然后,使用 润物细无声 语句,我们将创建一个有三行和两列的数组。 最后,我们将使用 润物细无声 语句再次与 保全 关键字 来增加二维数组的上界。

步骤。

  • 首先,按 ALT+F11 来调出 VBA模块 或者,你也可以从 开发商 选项卡 → 选择 视觉基础 .
  • 然后,从 插入 选项卡 → 选择 模块 我们将在这里输入VBA代码。

  • 接下来,在下面的代码中输入 模块 窗口。
 Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 25 Our_Array(2, 2) = 26 Our_Array(3, 2) = 25 Range("C6:D8") .Value = Our_Array End Sub 

VBA代码分解

  • 首先,我们正在调用 次级程序 " 储存二维数组的Redim_Preserve_2D_Array_Row ".
  • 然后,我们声明变量 我们的数组 作为一个动态数组。
  • 接下来,我们定义阵列的大小。 下限是 3 ,其上界为 2 ,并且都是从 1 .
  • 然后,我们给数组赋值。
  • 之后,我们将这些值输入到 C6:D8 细胞范围。
  • 之后,我们将执行代码。
  • 所以。 拯救 模块 并按 运转 .

  • 结果,它将返回定义的单元格范围的值。 我们可以看到," 芮秋 "是在行 1 和列 1 的位置,其定义为( 1,1 ) 在VBA代码中。

  • 现在,我们将调整数组的大小。
  • 因此,在前面的代码中加入这个,并删除第一个 Range.Value语句 .此外,从下面的快照中你可以看到代码的样子。
 ReDim Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8") .Value = Our_Array 

  • 在这里,我们将上界从( 1 2 ) 到 ( 1 3 )由 1 .
  • 然后,我们将这些值添加到数组中。
  • 现在,如果我们执行这段代码,我们会看到以前的值没有被保留下来。 它将返回以前的值的空白。

  • 现在,我们可以通过添加 保存关键词 进入 ReDim声明 .
  • 最后,我们的完整代码将是这样的。
 Option Explicit Sub Redim_Preserve_2D_Array_Row() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Range("C6:E8") . Value =Our_Array End Sub 

  • 现在,如果我们 运行 因此,我们将" 保护区 "的最后一个维度。 二维阵列 现在,下一个方法将告诉你如何" 保护区 "并调整数组的两个维度的大小。

阅读更多。 VBA在Excel中从列中获取唯一值到数组(3个标准)

类似读物

  • 如何为Excel中的表阵列命名(简单步骤)?
  • Excel VBA将CSV文件读入数组(4个理想例子)
  • 如何在Excel VBA中把范围转换成数组(3种方法)
  • Excel VBA:从数组中删除重复的内容(2个例子)

2.Excel VBA中的ReDim保留两个尺寸的二维阵列

在这最后一个方法中,我们将向你展示调整大小和""的步骤。 保护区 "该 二维阵列 在这里,我们将使用 VBA移位 如果我们试图在第一个方法中调整数组的下限,那么我们会看到" 下标超出范围 "错误。 现在,不再多说,让我们看看如何解决这个问题并实现我们的目标。

步骤。

  • 首先。 如第一种方法所示 ,调出 模块 窗口。
  • 其次,在第一段代码中加入以下几行代码。
 Our_Array = Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9") .Value = Our_Array 
  • 此外,最终方法的代码看起来是这样的。
 Option Explicit Sub ReDim_Preserve_2D_Array_Both_Dimensions() Dim Our_Array() As Variant ReDim Our_Array(1 To 3, 1 To 2) Our_Array(1, 1) = "Rachel" Our_Array(2, 1) = "Ross" Our_Array(3, 1) = "Joey" Our_Array(1, 2) = 26 Our_Array(3, 2) = 25 ReDim Preserve Our_Array(1 To 3, 1 To 3) Our_Array(1, 3) = "Texas" Our_Array(2, 3) = "Mississippi" Our_Array(3, 3) = "Utah" Our_Array =Application.Transpose(Our_Array) ReDim Preserve Our_Array(1 To 3, 1 To 4) Our_Array = Application.Transpose(Our_Array) Our_Array(4, 1) = "Monica" Our_Array(4, 2) = 26 Our_Array(4, 3) = "New Mexico" Range("C6:E9") .Value = Our_Array End Sub 

VBA代码分解

  • 首先,我们正在调用 次级程序 " 保存二维数组的ReDim_Preserve_2D_Array_Both_Dimensions ".
  • 然后,其余的代码,直到 VBA移位 函数与第一段代码中的相同。
  • 在这里,我们要对数组进行转置。
  • 然后,我们在增加数组的上界。
  • 之后,我们再对数组进行转置。 因此,最终会改变下限。
  • 接下来,我们为调整后的数组输入数值,同时保留旧的数据。
  • 最后,我们将这些值写到单元格范围内 C6:E9 .
  • 在这之后。 如第一种方法所示 , 运行 这个代码。
  • 因此,我们可以直观地看到代码是如何保留了一个 二维阵列 使用""。 保护区 "和 VBA移位 功能。

阅读更多。 VBA在Excel中对数组进行转置(3种方法)

需要记住的事情

  • 保护区 不能改变数组的下限。 要做到这一点,我们需要使用 转位 功能。
  • 我们只能使用 润物细无声 在动态数组上。

总结

我们已经向你展示了两种快速的方法来" 保护区 " a 2D 阵列 如果你在这些方法上遇到任何问题或有任何反馈意见,欢迎在下面评论。 此外,你可以访问我们的网站 ǞǞǞ 更多Excel相关的文章。 感谢您的阅读,请继续保持优秀的成绩

Hugh West is a highly experienced Excel trainer and analyst with over 10 years of experience in the industry. He holds a Bachelor's degree in Accounting and Finance and a Master's degree in Business Administration. Hugh has a passion for teaching and has developed a unique teaching approach that is easy to follow and understand. His expert knowledge of Excel has helped thousands of students and professionals worldwide improve their skills and excel in their careers. Through his blog, Hugh shares his knowledge with the world, offering free Excel tutorials and online training to help individuals and businesses reach their full potential.