vba - 如何在 VBA 中为重复键使用字典?
问题描述
根据这个实验,在数据集合中查找值的最快 VBA 方法是将数据以字典的形式放入。找到值的速度提高了 100 倍。VBA 中的字典有一个预定义的方法,名为:“.exist(key)”,用于按键查找值。但是没有预定义的方法来按值查找键。如您所知,在构建字典时,不允许重复键。当然可以使用“for”循环,但肯定会失去所获得的速度,并且对于大量数据而言,它再次效率不高。那么是否有其他解决方案可以像字典一样快速地在大量项目中找到值?谢谢
解决方案
您可以拥有两个字典,一个具有 Keys -- Values 的正常结构。另一个具有翻转结构的普通键现在是分隔字符串(“some|thing|like|this”),正常值是键。
一个例子是这样的:
Sub dictionaries()
Dim dictnormal As Object
Dim dictreversed As Object
Set dictnormal = CreateObject("Scripting.Dictionary")
Set dictreversed = CreateObject("Scripting.Dictionary")
Dim keyarr As Variant
keyarr = Array("Red", "Blue", "Green", "Yellow", "Brown")
Dim k As Variant
For Each k In keyarr
dictnormal.Add k, 1
If Not dictreversed.exists(dictnormal(k)) Then
dictreversed.Add dictnormal(k), k
Else
dictreversed(dictnormal(k)) = dictreversed(dictnormal(k)) & "|" & k
End If
Next k
For Each k In dictnormal
Debug.Print "Normal Keys: " & k, "Normal Values and Reversed Keys: " & dictnormal(k), "Reversed Values: " & dictreversed(dictnormal(k))
Next k
End Sub
我在普通字典中只有一个值,但它应该非常清楚地显示这个想法。
推荐阅读
- postgresql - 将两个表合并为一个物化视图
- python - Flask:request.referrer 从外部 URL 引用时不返回
- c# - 如何使用 C# 和 WPF 实现位于顶部并减少工作空间区域的窗口?
- python - 从 csv 文件调用数据并使用 django 显示到 html 页面中
- c - 查找非支配点的代码无法正常工作
- axon - JpaSagaStore 与 Jackson 一起无法正确存储状态
- html - 如何选择正确的元素来应用 CSS(准确地说是 SASS)
- python - 黄昏 ml 逻辑回归抛出此错误:“NotImplementedError: Can not add intercept to array with unknown chunk shape”
- c# - 将不同的 JSON 处理成类属性
- python - Matplotlib 包已安装,但代码不工作