我将EuroCPCrap映射为(j,0)(i,0),并希望将其放入一个映射为(j,i)的EuroCPConsol数组中。我试过了:
For j = 0 to CPIndex 'CPIndex is a global count of variables in matrix j references
For i = 0 to UBound (EuroCPCrap,3) 'i in the (now known to be) jagged
EuroCPConsol(j+1,i+1)= EuroCPCrap(j,0,i,0) 'add one since I'm base 1 but function that produced this matrix outputted base zero
Next i
Next j
我在UBound语句中得到一个下标错误,我意识到这是因为引用的数组中没有第三维。
答案 0 :(得分:1)
首先,我不明白为什么这个EuroCPCrap(j,0,i,0)
如果你在第一句中描述的是一个锯齿状的数组就会起作用。在它的外观上,它应该是EuroCPCrap(j,0)(i,0)
。
你有一个二维数组的父二维数组。您正在寻找的“第三个”维度实际上是每个子数组的第一个维度。所以这样的事情应该有效:
For i = 0 to UBound(EuroCPCrap(j,0),1)
实际上,从LBound
到UBound
的迭代更好的做法是确保遍历整个数组而不管你的Option Base
或数组是如何“变暗”:
For i = LBound(EuroCPCrap(j,0),1) to UBound(EuroCPCrap(j,0),1)
EuroCPCrap
真的需要锯齿吗?为什么不把它变成一个四维数组呢? EuroCPConsol
不是锯齿状的...它是否正确尺寸接受最大的子数组的内容?这些是要考虑的事情......