我想从我指定的范围创建一个数组,其中该范围是行而不是列的一部分。
我已经尝试过:
Dim mCH As Variant
mCH = Range("A1:F1").Value
For n = 1 To UBound(mCH)
Debug.Print mCH(n, 1)
Next n
我希望将 6 个值打印到立即窗口,其中包含第 1 行前 6 列中的值,但该数组仅包含一个值,即 A1 中的值
当我将值排列在一列中并执行以下操作时,它会起作用:
Dim mCH As Variant
mCH = Range("A1:A6").Value
For n = 1 To UBound(mCH)
Debug.Print mCH(n, 1)
Next n
但我无法出于我的目的以这种方式排列数据,因为我想从前 6 列标题创建一个数组
最佳答案
循环遍历二维一基数组的列
如果给定的单区域范围 (
rg
) 具有多个单元格,您只需使用以下命令即可将其值写入基于 1 的二维数组 (Data
):Dim Data() As Variant: Data = rg.Value
可以使用
UBound(Data)
检索该数组的行数(或第一维的上限(大小))。这是UBound(Data, 1)
的缩写 等于rg.Rows.Count
.此数组的列数(或第二维的上限(大小))只能通过
UBound(Data, 2)
检索 等于rg.Columns.Count
.如果要检索第一行的元素,则需要在行保持
1
的情况下循环遍历各列。 :Dim c As Long For c = 1 To UBound(Data, 2) Debug.Print Data(1, c) Next c
将前面的内容应用到您的示例中,您将使用以下内容:
Dim mCH() As Variant: mCH = Range("A1:F1").Value Dim n As Long For n = 1 To UBound(mCH, 2) Debug.Print mCH(1, n) Next n
关于arrays - VBA 根据电子表格中一行中保存的数据创建一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/77303306/