arrays - VBA 根据电子表格中一行中保存的数据创建一个数组

标签 arrays excel vba

我想从我指定的范围创建一个数组,其中该范围是行而不是列的一部分。

我已经尝试过:

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/

相关文章:

javascript - 我的 HTML 表单不会返回数组中的值?

java - 通过 Excel 与 Python/Java/其他编程语言访问 Bloomberg 的 API

excel - 是什么导致整个 ListBox 列为空?

excel - 日期字段混合(日期和文本)格式

c++ - 什么是数组到指针的衰减?

PHP 从 mysqli_fetch_row 数组中排序结果

javascript - 尝试从对象数组中删除键

arrays - 将单独的范围放入二维数组中

vba - Excel VBA - 匹配 2 列并删除 2 张纸上的重复项

vba - 如何使用 VBA 用户窗体循环访问工作簿中的多个工作表