【问题标题】:multidimensional array (matrix) from single array as column来自单个数组的多维数组(矩阵)作为列
【发布时间】:2017-06-16 18:24:48
【问题描述】:

我想知道如何将单个向量分配为 VBA 中动态多维数组中的特定列/行。

我的意思是,如果我运行以下代码: 将 m1() 调暗为变体

ar1 = Array(1, 2)
ar2 = Array(4, 5)
ar3 = Array("a", "b")

m1 = Array(ar1, ar2, ar3)

我得到这样的东西:

m1 是一个 Variant(0 到 2),在每个单元格中我都有一个维度为 2 的数组而不是获取:

m1 作为变体(0 到 2,0 到 1),换句话说,一个矩阵,如果我将矩阵定义为变体(0 到 2,0 到 1)并分别填充每个单元格,我会得到它. 像这样:

我想达到这样的目标:

m3 = [ar1;ar2;ar3]

但是这个抛出

错误 2015

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    数字数组:具有数字索引的数组。值以线性方式存储和访问。

    关联数组:以字符串为索引的数组。这会将元素值与键值关联起来,而不是按照严格的线性索引顺序来存储。

    多维数组:包含一个或多个数组和值的数组使用多个索引访问

    数值数组

      <?php
         /* First method to create array. */
         $numbers = array( 1, 2, 3, 4, 5);
    
         foreach( $numbers as $value ) {
            echo "Value is $value <br />";
         }
    
         /* Second method to create array. */
         $numbers[0] = "one";
         $numbers[1] = "two";
         $numbers[2] = "three";
         $numbers[3] = "four";
         $numbers[4] = "five";
    
         foreach( $numbers as $value ) {
            echo "Value is $value <br />";
         }
      ?>
    

    这将产生以下结果 -

    值为 1

    值为 2

    值为 3

    值为 4

    值为 5

    值是一

    值是两个

    值为三

    值为四

    值为五

    关联数组

    html>

      <?php
         /* First method to associate create array. */
         $salaries = array("jishan" => 2000, "bharat" => 1000, "abhi" => 500);
    
         echo "Salary of jishan is ". $salaries['jishan'] . "<br />";
         echo "Salary of bharat is ".  $salaries['bharat']. "<br />";
         echo "Salary of abhi is ".  $salaries['abhi']. "<br />";
    
         /* Second method to create array. */
         $salaries['jishan'] = "high";
         $salaries['bharat'] = "medium";
         $salaries['abhi'] = "low";
    
         echo "Salary of jishan is ". $salaries['jishan'] . "<br />";
         echo "Salary of bharat is ".  $salaries['bharat']. "<br />";
         echo "Salary of abhi is ".  $salaries['abhi']. "<br />";
      ?>
    

    这将产生以下结果 -

    稷山的工资是2000

    巴拉特的工资是1000

    abhi 的工资是 500

    稷山工资高

    巴拉特的薪水中等

    阿比工资低

    多维数组

      <?php
         $marks = array( 
            "jishan" => array (
               "physics" => 35,
               "maths" => 30,   
               "chemistry" => 39
            ),
    
            "bharat" => array (
               "physics" => 30,
               "maths" => 32,
               "chemistry" => 29
            ),
    
            "abhi" => array (
               "physics" => 31,
               "maths" => 22,
               "chemistry" => 39
            )
         );
    
         /* Accessing multi-dimensional array values */
         echo "Marks for jishan in physics : " ;
         echo $marks['jishan']['physics'] . "<br />"; 
    
         echo "Marks for bharat in maths : ";
         echo $marks['bharat']['maths'] . "<br />"; 
    
         echo "Marks for abhi in chemistry : " ;
         echo $marks['abhi']['chemistry'] . "<br />"; 
      ?>
    

    这将产生以下结果 -

    吉山物理分数:35

    巴拉特数学分数:32

    abhi 化学分数:39

    【讨论】:

    • 这些都不是 VBA,所以在这里用处不大。
    【解决方案2】:

    如果我关注,类似这样的事情

    Sub MatrixTest()
    
    ar1 = Array(1, 2)
    ar2 = Array(3, 4)
    ar3 = Array("a", "b")
    
    a = Array(ar1, ar2, ar3)
    a = Application.Transpose(a)
    
    End Sub
    

    【讨论】:

    • 几乎可以工作。它改变了维度,但通过转置改变了单元格的顺序。它使用(并按照您的示例)工作:a = Array (ar1, ar2, ar3) a = Application.Transpose(a)` a = Application.Transpose(a)
    【解决方案3】:

    如果您不介意从基于 0 的移动到基于 1 的移动,并且您的“行”不超过 65536,只需添加:

    m1 = Application.Index(m1, 0, 0)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-28
      • 1970-01-01
      • 2014-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多