【发布时间】:2014-07-15 20:29:42
【问题描述】:
我正在尝试从 Excel 工作表中存储的数据填充 3d 数组。我希望我只是不知道语法,但可能无法像使用 2D 数组那样将值“批量”分配给 3D 数组。比如……
Dim 2DArray() As Variant
2DArray = Range(A1:C10)
这非常干净和高效,我希望有类似的东西,而不是使用 3 个嵌套的 for-next 循环来一次填充一个值的数据。
作为背景,这是查找/插入气体压缩系数 Z,它取决于比重、压力和温度。我有 6 个表(实际上只是命名范围),用于 6 个不同的比重值。每个表都有以 Z 因子作为数据点的压力和温度交叉表。这是我的代码(不起作用):
Sub Array3DTest()
Dim ZTables() As Variant
ReDim ZTables(1 to 6, 1 to 15, 1 to 9)
'6 specific gravity tables, '15 pressure indices, 9 temp indices
'Here is my feeble attempt to guess the syntax...
'ZTables = ("tblZFactorSG1", "tblZFactorSG2", "tblZFactorSG3",
' "tblZFactorSG4", "tblZFactorSG5", "tblZFactorSG6")
End Sub
为了澄清,tblZFactorSG1...SG2...SG3...等是 6 个具有交叉表 Z 因子的命名范围。全部为 15 行(压力)乘 9 列(温度)。最后一行被注释掉了,因为 VBA 不喜欢这种语法,但也许你可以看到我在这里尝试做的事情。我正在尝试以 15x9 的块将数据分配给 3Darray。 tblZFactorSG1 包含应该进入 ZTables 的值(1、1 到 15、1 到 9)。 tblZFactorSG2 包含应该进入 ZTables 的值(2、1 到 15、1 到 9)。
提前感谢您的帮助。
【问题讨论】:
-
您要么必须满足于 6 个 2-d 数组(每个都使用 .Value 方法提取)的数组,要么使用循环“手动”创建 3-d 数组。没有内置的方法可以做你想做的事。
-
我认为 6 个二维数组的数组也会很有用。我认为称为锯齿状数组。您介意解释/显示您提到的“.Value”方法的代码吗?感谢您的澄清,蒂姆。
标签: arrays excel vba multidimensional-array assign