Arrays 在VBA中将列放入数组的直接方法
我希望将列的值放入数组或列表中,而不必执行for循环 所以基本上如果我有: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
Col A
---------
212
411
432
我想将这些值放入数组或列表中。这就是我的想法,但我不知道VBA语法:
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