基于通配符检索字典项目值 – VBA Excel

此刻,我正在运行一个字典,以便可以根据其中存储的键在表中填充缺失的值。 问题是我的表有更多的值(键)比在字典中存储的。 在某些情况下,我的表中的信息类似于字典中的某个键,我想知道是否可以使用通配符来检索项目。 示例如下:

字典中的示例logging:

  • 奔驰(钥匙)车(项目)
  • 川崎(钥匙)马达(项目)

让我们假设我的表有以下条目:

  • Merc(钥匙)却遗漏了这个项目,在这种情况下应该是“汽车”。

是否有可能做到这一点? 如果这个例子不好,我很抱歉,但是我希望你们中的任何一个能够帮助我。

我发现了几个关于这个话题的文章:

  • 字典的通配符search

  • 如何search字典键的一部分? – VB.Net

先谢谢你!

你可以写一个返回布尔值的函数。

Public Function KeywordExists(ByVal Keyword As String) As Boolean Dim k As Variant For Each k In objDict.Keys 'Your dictionary object If Keyword Like "*" & k & "*" Then KeywordExists = True Exit For End If Next k End Function 

调用它:

 If KeywordExists("Foo") then '... 

编辑:

要返回键,只需将返回types更改为string。

 Public Function StringKeyword(ByVal Keyword As String) As String Dim k As Variant For Each k In objDict.Keys 'Your dictionary object If Keyword Like "*" & k & "*" Then StringKeyword = K Exit For End If Next k End Function 

调用它:

 Dim key As String key = StringKeyword("Foo") 

左栏答案:不要使用字典,不要使用像,因为方法太慢,不能很好地扩展。 尝试其中之一,而不是:

  1. 使用接受通配符的高级筛选器。 您将不得不将数据转储到Excel中。 但是,我假设数据已经在网格中的某个地方。 但高级filter很快,我实际上在我创build的数据透视表过滤应用程序的幕后使用它,可以让用户在多个通配符和复杂排除项上快速过滤数据透视表。
  2. 在sorting的数据上使用二进制searchalgorithm。 我经常发现在Excel中这样做最容易,把两个列表转储到Excel中,在那里sorting,然后使用我在这里讨论的Double VLOOKUP技巧: http : //dailydoseofexcel.com/archives/2015/04/23/如何-备受更快是最双VLOOKUP帽子戏法/

查尔斯·威廉姆斯在这里有一个伟大的职位,可能是有用的,应该阅读不pipe: https : //fastexcel.wordpress.com/2012/07/10/comparing-two-lists-vba-udf-shootout-between-linear-search二进制search信息收集和词典/