从列表中查找string的解决scheme,以另一个stringVBA

我想做的是,我有一个擅长的地方,我每天都要上一些足球,网球

[Daily List]: https : //www.dropbox.com/s/45ulku7val6q6lj/sample.jpg?dl = 0

此外,我还有另外一个excel文件/表格,其中包括一些网球运动员名字,足球队名字,足球联赛名称:

[RedList]: https ://www.dropbox.com/s/h9nqx2zpq696o38/redlist.jpg

当然,我可以改变这个列表的格式只是一个testing列表。

现在我真正想要做的是从第二个列表(红色列表)检查是否有任何团队的名字出现在主要的工作表名称,并突出显示行,但我面临一些问题,一些额外的参数。

我试图做到这一点的一个方法是与一个SUMPRODUCT函数类似的东西:

=IF(SUMPRODUCT(COUNTIF(A4,"*"&$F$2:$F$6&"*"))=0,"None Found",INDEX($F$2:$F$6,MATCH(TRUE,INDEX(ISNUMBER(SEARCH($F$2:$F$6,A4)),),0))) 

哪些工作正常,但不完美的原因,例如,如果我在红名单名称Yankel泽梅尔,并在日常名单中出现名字显示为Yankel Z,或泽梅尔扬克尔,或泽梅尔Y.,function将返回False。

另一个问题可能是两个名字之间的逗号,或者一些特殊字符Anif / Salzburg II,ASKÖGmünd,Blau-WeißLinz等

所以我试图弄清楚我可以如何解决这个问题。

一个解决scheme使用在VBA查找,但我不知道这是否会工作。 另一个解决scheme,但更棘手一点就是创build一个访问数据库,并尝试存储每个名称的不同版本,例如Zemel Yankel = Yankel Zemel = Yankel Z = Zemel Y. = yankel,zemel等将它们重命名为独一无二的名字,例如Zemel Yankel。 事实是,我不知道这是否会很容易做到这一点,因为我没有很多的知识做访问,我不知道如果这是一个很好的解决scheme。

另一个解决scheme,但我不知道再说一遍,是使用regExp

我问得太多了吗? 你将如何解决这个问题?

像汤姆提到,这不是一个简单的问题,但轻微的扭曲,你可以达到你想要的。 我最近做了一个和我一样的项目,而且客户对这个安排非常满意。

创build一个名为Alias的新表,并在那里维护一个表。 像这样的东西。 所以,只要你遇到别名,就把它放在桌子上。 通过这些足球比赛,你将不会遇到10个以上的别名( 就我所见到的date而言 )。 但是,如果你遇到更多的名字,那么只需更新表。

在这里输入图像说明

现在使用你的.Find来遍历别名来find一个匹配。

在循环别名时,您还可以尝试使用VBA代码评估公式。 例如

 Dim rngAlias As Range '~~> Hard coding. This is where you will loop through the range Set rngAlias = ThisWorkbook.Sheets("Alias").Range("A2") 'sFormula = "=IF(SUMPRODUCT(COUNTIF(" & _ "A4" & _ ",""*""&$F$2:$F$6&""*""))=0,""None Found""," & _ "INDEX($F$2:$F$6,MATCH(TRUE,INDEX(ISNUMBER(SEARCH($F$2:$F$6," & _ "A4" & _ ")),),0)))" sFormula = "=IF(SUMPRODUCT(COUNTIF(" & _ rngAlias.Address & _ ",""*""&$F$2:$F$6&""*""))=0,""None Found""," & _ "INDEX($F$2:$F$6,MATCH(TRUE,INDEX(ISNUMBER(SEARCH($F$2:$F$6," & _ rngAlias.Address & _ ")),),0)))" 

希望这会让你开始!