【问题标题】:Adding a table of data to a dictionary excel vba将数据表添加到字典 excel vba
【发布时间】:2016-06-16 18:59:05
【问题描述】:

我是使用字典的新手,需要一些帮助。我有一个 A1:C4 范围内的数据表

A B C 1 4 7 2 5 8 3 6 9

有什么方法可以直接将这些表添加到字典中?

提前致谢

【问题讨论】:

  • 您能详细说明一下吗?目前尚不清楚您想从您的问题中获得什么,因此很难为您提供帮助。
  • 我了解到字典可以同时保存 1 个键和 1 个值表,即 key = "myRange", values = table.这是正确的,如果是,我该怎么做?
  • 您的任务(将一个范围放入字典中,以便您可以将其用作 SQL 语句的数据源)是行不通的。要么你误解了请求,要么请求者也不知道 VBA。

标签: excel vba dictionary


【解决方案1】:
Dim d As Scripting.Dictionary
Dim r As Excel.Range
Dim c As Excel.Range

Set d = New Scripting.Dictionary
Set r = Range("a1:c4")

For Each c In r.Cells
    d.Add CStr(c.Address), c.Value
Next c

【讨论】:

  • 谢谢 nathan 但这不是我想要的。我想知道字典是否可以将表作为一个整体,因为我以后必须在它上面运行 SQL。谢谢
  • 这样的东西有效吗?
  • d.Add "myTable", Range("a1:c4")
【解决方案2】:

我认为您可能正在寻找的是Multidimensional Array

一个标准的Array会在一个列表中保存一系列的值,这个列表中任意一点的值都可以被引用,例如:

myArray = Array("One", "Two", "Three")

'The first value in an array is at position 0 unless otherwise specified
MsgBox myArray(0) 'Will open a message box with the value "One"
MsgBox myArray(1) 'Will open a message box with the value "Two"
MsgBox myArray(2) 'Will open a message box with the value "Three"

虽然标准数组是一维的,但使用 Multidimensional Array 允许您向该列表添加多个维度。简单地说,一个二维数组会让你创建一个数据表。

dim myArray(1 to 3, 1 to 3) as Variant 将创建一个二维数组,同时指定“1 到 3”将分配一组可在数组中引用的项目大小和范围。以这张表为例:

A    B    C

D    E    F

G    H    我

将其放入多维数组将如下

Dim myArray(1 To 3, 1 To 3) As Variant

myArray(1, 1) = "A"
myArray(1, 2) = "B"
myArray(1, 3) = "C"
myArray(2, 1) = "D"
myArray(2, 2) = "E"
myArray(2, 3) = "F"
myArray(3, 1) = "G"
myArray(3, 2) = "H"
myArray(3, 3) = "I"

MsgBox myArray(2, 2) 'Will open a message box with the value "E" 

鉴于您希望从 Range("A1:C4") 生成此内容,您可以使用循环遍历每个单元格来创建此内容:

Dim myArray(1 To 4, 1 To 3) As Variant

For Each c In Range("A1:C4")
    myArray(c.Row, c.Column) = c.Value
Next c

【讨论】:

  • 感谢奥利弗。不幸的是我不能使用多维数组。我得到的简要说明是将数据范围放在字典中,然后显然我可以在 SQL 语句的 FROM 子句中使用该字典。这是一个挑战,因为我从来没有做过。快乐时光!
  • Set d = New Scripting.Dictionary d.Add "myTable", Range("a1:c4")
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多