如何将4D锯齿状阵列的值传输到2D标准阵列?

时间:2011-10-04 20:09:54

标签: vba

我将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语句中得到一个下标错误,我意识到这是因为引用的数组中没有第三维。

1 个答案:

答案 0 :(得分:1)

首先,我不明白为什么这个EuroCPCrap(j,0,i,0)如果你在第一句中描述的是一个锯齿状的数组就会起作用。在它的外观上,它应该是EuroCPCrap(j,0)(i,0)

你有一个二维数组的父二维数组。您正在寻找的“第三个”维度实际上是每个子数组的第一个维度。所以这样的事情应该有效:

For i = 0 to UBound(EuroCPCrap(j,0),1)

实际上,从LBoundUBound的迭代更好的做法是确保遍历整个数组而不管你的Option Base或数组是如何“变暗”:

For i = LBound(EuroCPCrap(j,0),1) to UBound(EuroCPCrap(j,0),1)

EuroCPCrap真的需要锯齿吗?为什么不把它变成一个四维数组呢? EuroCPConsol不是锯齿状的...它是否正确尺寸接受最大的子数组的内容?这些是要考虑的事情......