【问题标题】:Store element from excel into array VBA将元素从excel存储到数组VBA中
【发布时间】:2019-06-23 13:11:15
【问题描述】:

我有一些关于列的数据,我想使用 VBA 将其存储到数组中。存储后,我会引用数组中的元素并进行比较。

Dim tRange As Range

Set tRange = wb.Sheets("wbname").Range("A1:A5")

假设我想将 5 行的 column A 存储到 VBA 中的数组中。我可以知道路吗?

【问题讨论】:

标签: arrays excel vba


【解决方案1】:

这是一种方法:

Sub Dave()
    Dim tRange As Range, wb As Workbook, cell As Range
    Dim i As Long

    Set wb = ThisWorkbook
    Set tRange = wb.Sheets("wbname").Range("A1:A5")

    ReDim arr(1 To tRange.Count)
    i = 1
    For Each cell In tRange
        arr(i) = cell.Value
        i = i + 1
      Next cell
End Sub

注意:

这种技术不依赖于范围的“形状”。如果范围是一列的一部分,或者一行的一部分,或者一个矩形的单元格,甚至是一组不相交的单元格,它就会起作用。

【讨论】:

  • 感谢@Gary 的学生,您的解决方案对我有用,但就速度而言,我需要避免使用 for 循环。谢谢!
  • @Dave 你想要一个非循环的替代方案吗??
  • 感谢兄弟的提议,我设法通过查看其他人以前存在的其他问题来解决它。顺便说一句,再次感谢,上帝保佑
【解决方案2】:

您可以只声明一个 Variant 数据类型并使其等于范围。

Dim DirArray As Variant
DirArray = Range("a1:a5").Value

@vacip 在上一个问题中恰好回答了完全相同的范围! Creating an Array from a Range in VBA

【讨论】:

  • 感谢您的回答,我有几件事要问 1. 如何引用数组中的元素?像 DirArray(1) 一样获取第一个元素假设数组从 1 开始。 2. 如何获取数组中元素的数量?我知道如果我使用范围,例如: Dim tRange As Range ,我可以使用“tRange.rows.count”来获取范围内的总元素。谢谢@Earl_of_Duke
  • @dave 您可以使用 DirArray(i) 来引用数组中的第 i 个元素。要获取元素的数量,您可以使用UBound(DirArray)。我建议阅读我在 cmets 中针对您的问题发布的文章。这将使您更好地理解您的问题。
  • @Dean - 小修正:由于上述数据字段数组创建了一个 2 维(基于 1)数组,您通过 DirArray(1,1) 获得第一个元素,第二个通过DirArray(2,1) 等。否则,为了获得一个一维数组,您必须首先展平 数据编码Application.Transpose(Range("A1:A5").Value) 才能使用一个索引参数获得DirArray(1)。 - 旁注: 更好的做法是完全限定您的范围引用,例如使用ThisWorkbook.Worksheets("MySheetname").Range("A1:A5").Value
  • 嗨@T.M.是的!这就是我所做的,但是使用“.Value2”。因此,当我想引用数组中的元素时,我会将其引用为 DirArray(I,1) 其中 I 是循环的计数器。希望我是对的。谢谢顺便说一句
  • @T.M.是的,您是正确的,感谢您的更正。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-25
  • 1970-01-01
  • 2013-09-03
  • 1970-01-01
  • 2017-01-24
  • 2015-05-06
  • 2015-11-26
相关资源
最近更新 更多