Mat*_*att 0 excel vba jagged-arrays excel-vba
所以我想创建一个数组数组,从我收集的数据中,我需要一个锯齿状数组.
我有一个数组x(i,j),它定义了一个整数的正方形nxn矩阵.对于k的每次迭代,交换该数组内的两个整数值以尝试并更好地使用矩阵x(i,j).我需要创建一个数组,在每次k次迭代后存储这个矩阵x(i,j).
澄清一下,说我有没有
1 2 3
4 5 6
7 8 9
Run Code Online (Sandbox Code Playgroud)
我执行迭代交换数组中的两个元素:
7 2 3
4 5 6
1 8 9
Run Code Online (Sandbox Code Playgroud)
我希望能够将这些数组存储在数组中,以便随时调用.我试过这里的解决方案:
Dim y() As Variant 'Declare as a variant to contain arrays
ReDim y(1 To IterationLimit) 'This will be the jagged array
For k = 1 To IterationLimit
'Some code goes here for the swap
y(k) = x(i,j)
next k
Run Code Online (Sandbox Code Playgroud)
现在说我想要第85次迭代.我希望能够输入y(85)[或类似]来拉出特定时间的矩阵x(i,j).
希望我已经足够好地解释了这一点.感谢任何帮助,我真的坚持这一点.
编辑:删除的代码
好.我想你可能根本就没有y正确地分配数组.正如我在评论中提到的:
y(k) = x(i,j)是仅存储由I表示的值/ J坐标中x阵列.
为了在那时y(k)引用整个数组x,你可以这样做:
y(k) = x
如果仍然没有运作,那么其他可能是不正确的.这是一个例子,我有一个2x2(基数0)数组baseArray,我明确填充了一些值.我迭代i = 0 to itLimit,并在每次迭代中,迭代数组中的项,将值乘以2,并存储在数组变量中tmpArray.在转换值之后,我将它们存储在中arrContainer,然后继续下For i = 0 to itLimit一次迭代.
Sub FunWithArrays()
Dim itLimit As Integer '## Iteration limit.'
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim baseArray(2, 2) As Variant '## an example array.'
'## Put some dummy data in this array.'
baseArray(0, 0) = 1
baseArray(0, 1) = 65
baseArray(0, 2) = 13
baseArray(1, 0) = 14
baseArray(1, 1) = 29
baseArray(1, 2) = 44
baseArray(2, 0) = 9
baseArray(2, 1) = 16
baseArray(2, 2) = 33
Dim tmpArray(2, 2) As Variant '## This will temporarily hold values as we transform them.'
Dim arrContainer() As Variant '## an array of arrays, to store the iteration arrays.'
itLimit = 2 '## set a max iteration.'
For i = 0 To itLimit
'## Transform the base array somehow'
For j = LBound(baseArray, 1) To UBound(baseArray, 1)
For k = LBound(baseArray, 2) To UBound(baseArray, 2)
tmpArray(j, k) = baseArray(j, k) * 2
Next
Next
ReDim Preserve arrContainer(i)
arrContainer(i) = tmpArray
Next
Dim y As Variant
'## Now, refer to a single iteration stored in the arrContainer variable:
y = arrContainer(2)
End Sub
Run Code Online (Sandbox Code Playgroud)
在第一个屏幕截图中,我使用Locals窗口来查看变量及其包含的内容.在第一次迭代之后,您可以看到tmpArray已填充的尺寸与尺寸相同baseArray,但其中的值已乘以2.

检查arrContainer变量,我们看到它只有1个项目,该项目是一个等于tmpArray我们在上面的迭代中创建的数组.

在最后一次迭代之后,我们可以查看arrContainer并查看它包含3个项目(每个For i to itLimit循环0到2 ).内部的每个数组arrContainer都等于上面迭代中创建的一个数组.

我们现在可以参考这些项目,例如:
Dim y as Variant
y = arrContainer(2) '# or any in bounds index could be used instead of "2"'
最后使用VBE Locals窗口查看y:

| 归档时间: |
|
| 查看次数: |
4084 次 |
| 最近记录: |