如何将4D锯齿数组的值转换为2D标准数组?

  • 本文关键字:数组 转换 2D 标准 4D vba
  • 更新时间 :
  • 英文 :


我将EuroCPCrap映射为(j,0)(I,0),并希望将其放入映射为(j, I)的数组eurocpconsole中。我试着:

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

首先,我不明白为什么这个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不是锯齿状的…它的尺寸是否正确以接受子数组中最大的内容?

最新更新