excel - 硬编码一个简单的 4X3 数组
问题描述
我看到这个问题很好地展示了如何对一维数组进行硬编码。但是,我正在尝试对 2D 数组进行硬编码,但我的各种尝试都失败了。
这是我迄今为止尝试过的
Points = Array(Array(2, 1, -2), Array(8, -7, 8), Array(-1, -10, 5), Array(5, -3, 3))
Points = Array(2, 1, -2 ; 8, -7, 8 ; -1, -10, 5 ; 5, -3, 3)
Points = Array(2, 1, -2 : 8, -7, 8 : -1, -10, 5 : 5, -3, 3)
Points = Array((2, 1, -2), (8, -7, 8), (-1, -10, 5), (5, -3, 3))
有没有办法做到这一点,还是我必须单独分配每个条目?
即我试图避免以下情况
Points(1,1) = 2
Points(1,2) = 1
Points(1,3) = -2
Points(2,1) = 8
Points(2,2) = -7
Points(2,3) = 8
Points(3,1) = -1
Points(3,2) = -10
Points(3,3) = 5
Points(4,1) = 5
Points(4,2) = -3
Points(4,3) = 3
解决方案
VBA 不支持在创建时使用默认值 0/nothing 以外的值初始化数组。
创建小数组的最简单方法是使用 Array 方法。
例如对于一维数组
Dim myArray as Variant
myArray = array(1,2,3,4,5)
多维数组可以通过嵌套 Array 语句来实现。
Dim myArrayUniform as Variant
myArrayUniform = Array(Array(2, 1, -2), Array(8, -7, 8), Array(-1, -10, 5), Array(5, -3, 3))
通过嵌套数组语句创建数组时,您会得到一个数组数组,也称为锯齿数组。锯齿状数组与普通多维数组的不同之处在于它们用于访问单个项目的命名法略有不同。值得注意的是,下面的声明对于锯齿状数组是完全合法的
Dim myArrayUneven as Variant
myArrayUneven = Array(Array(2, -2), Array(8), Array(-1, -10, 5), Array( 3))
对于每个级别的 Array 语句,使用一组括号来访问交错数组的各个项目。
myArray(x)
MyArrayUniform(x)(y) ' NOT myArrayUniform(x,y)
etc.
为什么使用这个命名法?myArrayUniform 被声明为一维数组,其中的每一项本身就是一个数组。因此,要访问任何单个项目,我们首先选择初始一维数组中的项目,例如 myArrayUniform(x)。这将返回一个数组,然后我们为其选择我们希望的项目,例如(y)。因此 myArray(x)(y)。
另一个应该注意的“特性”是声明为 Variant 的变量可以包含一个数组。因此,如果变量声明为 Variant,则使用 Array 语句声明的数组的变量声明不需要括号。
推荐阅读
- php - 为什么没有 echo $e->getMessage(); 打印错误信息
- machine-learning - 评估 AutoKeras 模型给出不同的结果,然后与纯 Keras 评估相同的模型(h5 文件)
- bash - Bash:由“文本在找到匹配的引号之前结束”引起的“无法解析参数”
- html - 具有高度的 flexbox:100% 不适用于 chrome 72+
- python - 关于 tf.layers .dense 的问题
- c# - Windows 服务对运行 .exe 文件的限制
- java - gle.firebase.database.core.utilities.encoding.CustomClassMapper.serialize 错误是什么?
- nginx - Geth websocket over nginx 反向代理
- typescript - 如何更新firestore中的文档字段?
- symfony - 根据第三方捆绑包中的配置使用服务进入服务