vba 建立一个二维数组如下:

hz=[{1,6,37,38,39,40;2,11,37,41,42,43;3,16,38,41,44,45;4,21,39,42,44,46;5,26,40,43,45,46;7,12,37,47,48,49;8,17,38,47,50,51;9,22,39,48,50,52;10,27,40,49,51,52;13,18,41,47,53,54;14,23,42,48,53,55;15,28,43,49,54,55;19,24,44,50,53,56;20,29,45,51,54,56;25,30,46,52,55,56}]
提示标识符太长,这些数字之间又没有规律,也不允许用单元格做辅助,那么,怎样建立这个15行6列的二维数组。

我有一个办法:
用array函数,一个array可以代表一个一维数组,相互嵌套就可以表示多维,如下面创建一个两维数组。
Dim hz
hz = Array(Array(1, 6, 37, 38, 39, 40), Array(1, 6, 37, 38, 39, 40))
特别注意:引用时不能用一般的二维数组比如 hz(1,2) 的方式去引用,而是用 hz(1)(2)的方式。而且数组下标都是默认从0开始的。如果要方便从1开始,我感觉也只能用循环逐个赋值的方法,如楼下的做法。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-12
Dim arr(1 To 15, 1 To 6)
hz = Array(1, 6, 37, 38, 39, 40, 2, 11, 37, 41, 42, 43, 3, 16, 38, 41, 44, 45, 4, 21, 39, 42, 44, 46, 5, 26, 40, 43, 45, 46, 7, 12, 37, 47, 48, 49, 8, 17, 38, 47, 50, 51, 9, 22, 39, 48, 50, 52, 10, 27, 40, 49, 51, 52, 13, 18, 41, 47, 53, 54, 14, 23, 42, 48, 53, 55, 15, 28, 43, 49, 54, 55, 19, 24, 44, 50, 53, 56, 20, 29, 45, 51, 54, 56, 25, 30, 46, 52, 55, 56)

l = 1
For i = 0 To UBound(hz)
j = j + 1
arr(j, l) = hz(i)
If j = 15 Then j = 0: l = l + 1
Next追问

相似回答