Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 锯齿阵列到二维阵列_Arrays_Vba_Multidimensional Array_Range_Jagged Arrays - Fatal编程技术网

Arrays 锯齿阵列到二维阵列

Arrays 锯齿阵列到二维阵列,arrays,vba,multidimensional-array,range,jagged-arrays,Arrays,Vba,Multidimensional Array,Range,Jagged Arrays,我从一个范围(不包括任何空白或零填充列)创建了一个非连续列的锯齿状数组。现在我想连接锯齿数组中的不同列,并将其转换为一个二维数组,如果我们将一个范围传递给一个变量,就会得到这个数组。我无法使用索引或转置来提取列名以填充XValues、Values和Series。100%StackedBarChart的名称,因此需要 以下是截图: 锯齿阵列: 范围数组: 正如您在锯齿状数组中看到的,每个列单元格显示在最外面,行单元格1到5显示在最里面,而在范围2d数组中,它是反之亦然。列和行的大小相同,即5行

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

以下是截图:

锯齿阵列:

范围数组:

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

如何将锯齿阵列转换回普通范围类型的矩形2D阵列?谁能快点帮我吗?
谢谢。

关于Florent的想法,我实际上写了我自己的Jagged2转换器:

   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数组:


有没有更快捷的方法来避免循环?:)

根据弗洛伦特的想法,我实际上写了我自己的Jagged2转换器:

   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数组:


有没有更快捷的方法来避免循环?:)

我知道的唯一方法是创建一个二维数组并用for循环填充它。如何设置这样的二维数组?你能给我举个例子吗?看看这里:我知道的唯一方法是创建一个二维数组并用for循环填充它。我如何设置这样一个二维数组?你能给我举个例子吗?看看这里:你找不到更快的方法,因为这是唯一的方法。但是,您可以通过将tarr()声明为Variant,c声明为Long,r声明为Long,并在第二个中使用变量作为for的边界来改进此方法。您不会找到更快的方法,因为这是唯一的方法。但是,您可以通过将tarr()声明为Variant、c声明为Long、r声明为Long,并在第二个声明中使用变量作为边界来改进这一点。