【问题标题】:Jagged Array to 2D Array锯齿状阵列到二维阵列
【发布时间】:2016-07-09 21:15:06
【问题描述】:

我从一个范围(不包括任何空白或零填充的列)中创建了一个锯齿状的非连续列数组。现在我想加入锯齿状数组中的不同列,并将其转换为二维数组,如果我们将范围传递给变量,我们将得到该数组。我无法使用 INDEX 或 TRANSPOSE 提取列名来填充 100%StackedBarChart 的 XValues、Values 和 Series.Name,因此需要。

这里是截图:

锯齿状阵列:

范围数组:

正如您在锯齿状数组中看到的那样,每列单元格显示在最外面,行单元格 1 到 5 显示在最里面,而在 2d 数组范围内,反之亦然。列和行的大小相同,即 5 行和 2 列。

如何将锯齿状数组转换回正常范围类型的矩形二维数组?任何人都可以快速帮助我吗? 谢谢。

【问题讨论】:

标签: arrays vba multidimensional-array range jagged-arrays


【解决方案1】:

根据 Florent 的想法,我实际上编写了自己的 Jagged2Rectconverter:

   Dim tarr
   ReDim tarr(1 To UBound(TempArr(1), 1), 1 To UBound(TempArr, 1))

   For c = LBound(TempArr, 1) To UBound(TempArr, 1)
       For r = LBound(TempArr(c), 1) To UBound(TempArr(c), 1)
           tarr(r, c) = TempArr(c)(r, 1)
       Next r
   Next c

现在 tarr() 给了我相同的 Rect 数组:

没有循环的任何更快的方法? :)

【讨论】:

  • 您不会更快地找到任何东西,因为这是唯一的方法。但是,您可以通过声明 tarr() As Variant、c as Long、r as long 并在第二个 for 中使用变量作为边界来改进这一点。
猜你喜欢
  • 1970-01-01
  • 2015-01-30
  • 1970-01-01
  • 1970-01-01
  • 2021-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
相关资源
最近更新 更多