我是 VBA 中数组的长期用户,但我最近了解了一些关于散列的知识,我想知道是否可以使用它在我的数组中构建更有效的搜索。为了保持具体,我所做的是将二维数组转换为行字典,其中键是在“单元格”中找到的字符串(当然是唯一的),并通过 asc 转换为 double。
我想下面的代码解释了我的意思:
Private pHook As Object
Sub test()
Set pHook = CreateObject("Scripting.Dictionary")
key = StoAsc("SomeStringOneWantstoFind")
If Not pHook.Exists(key) Then pHook.Add key, "TEST"
d = pHook(key)
End Sub
Public Function StoAsc(stg As String) As Double:
Dim key As String
key = ""
For ii = 1 To Len(stg)
S = Asc(Mid(stg, ii, 1))
key = key & S
Next ii
StoAsc = CDbl(key)
End Function
它看起来很有效,当我只想在数据中找到一些东西时,它完成了避免循环的工作。
但是我无法摆脱这样的想法,即应该有比自己构建散列更容易和更合乎逻辑的路径。我走在一条好路上吗?有没有更简单的方法来“散列一个数组”,所以每次我需要一些东西时都不必循环?