同时打印2个单独词典的键

时间:2018-05-25 19:20:26

标签: excel vba dictionary

我有两个字典都包含字符串值。一个包含电线杆的观察到的电气缺陷,另一个包含观察到的结构缺陷,特定于不同的工作人员。我想同时打印所有这些字典键并彼此相邻。这是我真正知道如何引用字典键的唯一方法:

With Sheets("Results")
    For Each Item In electricalNotes
       .Range("G" & iResults).Value = Item
       .Range("H" & iResults).Value = electricalNotes(Item)
       iResults = iResults + 1
    Next
End With
electricalNotes.RemoveAll

问题是我打印我的structuralNotes字典的项目和值的代码是相同的,并且必须使用相同的增量器iResults,因为代码必须认识到这些观察与相应的工作人员配对。但我必须单独引用它们,因为我只知道如何执行“For Each”引用命令。由于它们是单独引用的,因此它们各自都有自己的iResults增量器,这意味着它在完成一个字典后继续递增,在完成的打印电气缺陷下打印结构缺陷(进一步留下带有文本的列)(右下角带有文本) 。请参阅下面链接中的图片以获取可视化帮助: Dictionary Help Visualization

因此,如果有人知道如何解决这个特定问题或者知道更好的方式来引用并随后同时打印存储在两个词典中的项目,那么将非常感谢帮助!

1 个答案:

答案 0 :(得分:3)

我很难理解你的结构,但是,假设electricalNotes中的键与structuralNotes中的键之间存在一对一的关联,那么你所要做的就是阅读将密钥分成两个独立的变量数组,然后使用计数器遍历数组。类似的东西:

v1 = d1.Keys
v2 = d2.Keys

ReDim v3(1 To d1.Count, 1 To 4) 'or write directly to the worksheet

Dim I As Long

For I = 0 To d1.Count - 1
    v3(I + 1, 1) = v1(I)
    v3(I + 1, 2) = d1(v1(I))
    v3(I + 1, 3) = v2(I)
    v3(I + 1, 4) = d2(v2(I))
Next I
  • v1=d1.keys将在字典中创建基于零的一维数组。

  • 我选择将结果写入vba数组(v3),但您可以直接写入工作表。后者会慢得多。填充后,您可以在工作表中单步编写v3

  • 请注意,v3是一个与工作表对应的基于单一的二维数组,因此您必须根据引用的数组调整索引I。我是这样做的,如果你愿意的话,你可以Dim v3作为基于零的数组,并使用v(0,1-4)作为列标题。