基于通配符的词典项值检索-VBA Excel
目前,我正在运行字典,以便根据表中存储的键来填充表中缺少的值。问题是我的表的值(键)比字典中存储的值(键)多。在某些情况下,我的表中的信息类似于字典中的某个键,我想知道是否可以使用通配符来检索这些项。示例如下: 字典中的示例记录:基于通配符的词典项值检索-VBA Excel,vba,excel,dictionary,Vba,Excel,Dictionary,目前,我正在运行字典,以便根据表中存储的键来填充表中缺少的值。问题是我的表的值(键)比字典中存储的值(键)多。在某些情况下,我的表中的信息类似于字典中的某个键,我想知道是否可以使用通配符来检索这些项。示例如下: 字典中的示例记录: 梅赛德斯(钥匙)车(项目) 川崎(关键)电机(项目) 假设我的表有以下条目: Merc(钥匙),但缺少该项目,在本例中应为“汽车” 有可能做到这一点吗?如果这个例子不好,我很抱歉,但我希望你们中的任何人都能帮助我 我找到了几篇关于这个主题的文章: 提前
- 梅赛德斯(钥匙)车(项目)
- 川崎(关键)电机(项目)
- Merc(钥匙),但缺少该项目,在本例中应为“汽车”
提前谢谢你 您可以编写一个返回布尔值的函数
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 '...
Dim key As String
key = StringKeyword("Foo")
编辑:
要返回键,只需将返回类型更改为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
称之为:
If KeywordExists("Foo") then '...
Dim key As String
key = StringKeyword("Foo")
您可以编写一个返回布尔值的函数
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 '...
Dim key As String
key = StringKeyword("Foo")
编辑:
要返回键,只需将返回类型更改为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
称之为:
If KeywordExists("Foo") then '...
Dim key As String
key = StringKeyword("Foo")
左栏回答:不要使用字典,也不要使用like,因为这种方法太慢,扩展性不好。请尝试以下方法之一:
左栏回答:不要使用字典,也不要使用like,因为这种方法太慢,扩展性不好。请尝试以下方法之一:
Hey@Kostas K.,但这不会从字典中返回键的值。它只会告诉我是否有类似的东西,请参见编辑。只需将返回类型从boolean更改为string并返回键即可。太棒了!我会把它标记为已回答,但我可以要求额外的东西吗?如果我在一个带有for循环的表中循环,并且需要在其中使用for-each,那么有没有办法提高性能?因为循环中的一个循环会使它变慢。谢谢你回答这个问题@Kostas K.外循环包含多少条记录?恐怕没有其他方法可以像那样使用
。Dictionary有一个.Exists
方法,但它只查找整个键(与上面的循环类似,但速度更快)。是的,我知道Exists,但遗憾的是它在这种情况下对我没有帮助。目前,主循环有12000条记录,而for-each正在其内部进行。但我希望我能在更多的数据上使用它,大约10万行。如果你不知道,它仍然是好的。谢谢你帮我解决这个问题@Kostas K.Hey@Kostas K.,但这不会从字典返回键的值。它只会告诉我是否有类似的东西,请参见编辑。只需将返回类型从boolean更改为string并返回键即可。太棒了!我会把它标记为已回答,但我可以要求额外的东西吗?如果我在一个带有for循环的表中循环,并且需要在其中使用for-each,那么有没有办法提高性能?因为循环中的一个循环会使它变慢。谢谢你回答这个问题@Kostas K.外循环包含多少条记录?恐怕没有其他方法可以像
那样使用。Dictionary有一个.Exists
方法,但它只查找整个键(与上面的循环类似,但速度更快)。是的,我知道Exists,但遗憾的是它在这种情况下对我没有帮助。目前,主循环有12000条记录,而for-each正在其内部进行。但我希望我能在更多的数据上使用它,大约10万行。如果你不知道,它仍然是好的。谢谢你帮我解决这个问题@谢谢你的回复!我会看看你分享的文章谢谢你的回复!我会看看你分享的文章