使用excelvba计算精确匹配

使用excelvba计算精确匹配,excel,vba,count,exact-match,Excel,Vba,Count,Exact Match,我正在尝试使用Excel VBA查找精确匹配的单词,但由于区分大小写或部分匹配而未能找到 这是我的数据 “体验”列包含某些关键字,我正在根据主列表提取这些关键字 结果中的问题是 它显示UI2意味着,UI显示了2次,但正如我们在经验中看到的,它只显示了1次 和GO一样,它显示了2个:一个来自GO,另一个来自Google NoSQL已经被提取到NoSQL和SQL中,但是有两种不同的技能集:NoSQL和SQL,因为经验中没有SQL,所以不应该提取 在主文件中有一个称为“R”的技能集,很难提取特定的R,

我正在尝试使用Excel VBA查找精确匹配的单词,但由于区分大小写或部分匹配而未能找到

这是我的数据

“体验”列包含某些关键字,我正在根据主列表提取这些关键字

结果中的问题是 它显示UI2意味着,UI显示了2次,但正如我们在经验中看到的,它只显示了1次

和GO一样,它显示了2个:一个来自GO,另一个来自Google

NoSQL已经被提取到NoSQL和SQL中,但是有两种不同的技能集:NoSQL和SQL,因为经验中没有SQL,所以不应该提取

在主文件中有一个称为“R”的技能集,很难提取特定的R,因为它代表了每个R

这是我的密码剪

我读了很多文章,但没有找到合适的解决方案。请帮忙


谢谢

如果你不想“去”匹配“谷歌”,你需要考虑单词边界。您最好使用正则表达式方法来查找匹配项

注意:为了避免将“Go”与“Go”匹配,您需要匹配区分大小写,但为了避免在其他术语上出现遗漏,您可能需要传递所有可能的大小写变体,例如“mySQL | mySQL”

子匹配测试仪()
如弦、技巧等
s=“我现在上学了,使用了R、MySQL、noSQL和”&_
“SQL和Go是我在谷歌的评级工作。我喜欢R”
对于数组中的每项技能(“SQL”、“noSQL | noSQL”、“mySQL | mySQL”、“R”、“Go”、“VBA”、“C”)
调试。打印技能,计数匹配项(s,技能)
下一项技能
端接头
函数CountMatches(sIn作为字符串,countThis)的长度
Dim regEx作为对象,匹配作为对象
使用CreateObject(“vbscript.regexp”)
.Global=True
.IgnoreCase=False
.Pattern=“\b(“&countThis&”)添加单词边界
设置匹配项=.Execute(sIn)
以
CountMatches=匹配项。计数
端函数
输出:

sql1
noSQL | noSQL 1
mySQL | mySQL 1
R2
加油1
VBA 0
C#0

请不要发布代码的图片。相反,发布代码本身,以便人们可以复制/粘贴它(如果他们愿意)。如果您想匹配“Go”而不是“Go”,则正则表达式需要区分大小写。如果你不想区分大小写,那么你需要从结果中过滤掉“go”。什么是最好的取决于你的确切设置以及你如何维护你的搜索词列表。谢谢你的回复。我使用LAST或UCASE来区分大小写,但如果代码是C++,则该代码会出错。它是说应用程序/对象定义的错误您能解释一下在Set matches=.Execute(sIn)中基本上发生了什么吗。一切都很清楚。非常感谢
Execute
是您传递要分析的字符串的地方-您已经使用要搜索的模式(以及其他设置,如ignore case)设置了regex对象,因此这是它尝试匹配模式并生成0个或更多“匹配项”的点,这些“匹配项”将返回到
matches
集合。