Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 在VBA中将列放入数组的直接方法_Arrays_Excel_Vba - Fatal编程技术网

Arrays 在VBA中将列放入数组的直接方法

Arrays 在VBA中将列放入数组的直接方法,arrays,excel,vba,Arrays,Excel,Vba,我希望将列的值放入数组或列表中,而不必执行for循环 所以基本上如果我有: Col A --------- 212 411 432 我想将这些值放入数组或列表中。这就是我的想法,但我不知道VBA语法: 以某种方式引用A列(即myColumn=列(“A列”) 将列值插入数组(即myArray=myColumn 感谢您的帮助!这里有一个方法: Sub dural() Dim myColumn As Range Dim myArray() as Variant Set myC

我希望将列的值放入数组或列表中,而不必执行for循环

所以基本上如果我有:

Col A
---------
212
411
432
我想将这些值放入数组或列表中。这就是我的想法,但我不知道VBA语法:

  • 以某种方式引用A列(即myColumn=列(“A列”)
  • 将列值插入数组(即myArray=myColumn
  • 感谢您的帮助!

    这里有一个方法:

    Sub dural()
        Dim myColumn As Range
        Dim myArray() as Variant
        Set myColumn = Range("A1:A3")
        myArray = myColumn
        For X = 1 To 3
            MsgBox myArray(X, 1)
        Next X
    End Sub
    
    有多种方法可以同时设置范围和数组变量的大小。

    试试这个

    Sub Main()
     Dim arr() As Variant
     arr = Range("A1:A3")
    
    
    For i = LBound(arr) To UBound(arr)
        Debug.Print arr(i, 1)
    Next
    
    End Sub
    

    另外,当使用单个列或行时,您可以使用
    TRANSPOSE
    创建
    1D
    变量数组,而不是默认的
    2D
    数组(如Santosh所做)

    1D
    方法与
    过滤器
    连接
    拆分
    功能结合使用非常有用,例如


    你为什么不想使用for循环呢?因为我认为可以有一种更直接的方法来实现这一点,从而提高效率。我不会担心效率,除非你对数千行数据反复运行。for循环是一种可行的方法。我不知道如何在没有一个循环,即使有,它也会在引擎盖下循环——你只是不知道而已。我将运行这个程序获取大量数据,这就是我担心的原因。
    arr=Range(“A1:A3”)
    此语句将range的值放入数组而不循环。请参见下面的答案。为什么需要MsgBox?在开头添加
    Dim MyArray()作为Variant
    Hi Santosh,谢谢,我认为它是有效的。不过还有两个问题。如何查看print语句?如果我想为数组编制索引,它是否就是arr(1)?@user3466555 For loop确实显示了如何打印数组的值。请参阅,这可能会有所帮助。请注意,
    Dim arr()As Variant
    声明了一个
    Variant
    数组。由于
    Variant
    可以保存数组,因此这是不必要的。相反,请使用
    Dim arr As Variant
    并保持其余代码不变。
    Sub OneD()
    Dim arr
    arr = Application.Transpose(Range("A1:A3").Value2)
    End Sub
    
    Sub TwoD()
    Dim arr
    arr = Range("A1:A3").Value2
    End Sub