创buildExcel用户定义函数以匹配列表中的同义词

在我的工作上,我们有几个出租物业,我们pipe理。 这些属性中的每一个都可能有不同的名称。 例如,一个属性可能被称为琥珀网关,白金网关,网关等。我们可能有500-600 Excel工作簿,其中有不同types的信息,我可能会被要求从各种信息中提取信息。

缺乏一致的命名方法使我无法使用标准的索引/匹配function来查找数据。 我不确定这是否是最好的解决scheme,但是这是我解决问题的方法。

我创build了一个工作表,它具有列A中所有属性名称的列表。任何关联的名称都列在列B,列C中同一行的右侧,等等。 只是为了简单,说只有5个属性,我所有的数据是在A1:E5。 然后说我感兴趣的财产是在F1和我想“匹配”的财产清单是在G1:G5。 所以我的数据看起来像这样:

River Stream Creek Brook Rivulet Apple Fruit Rock Boulder Stone Slab Candy Dessert Sweets Forest Trees 

鉴于“巨石”一词和下面的列表:

 Candy Fruit Creek Slab Forest 

我的目标是返回同义词“slab”的列表位置 – 在这种情况下,4.我想我可以使用下面的数组公式替代Match函数。 做到这一点:

 {=SUMPRODUCT(--(INDEX(A1:E5,SUMPRODUCT(--(A1:E5=F1)*ROW(A1:E5)),) =G1:G5)*IF(G1:G5<>"",MATCH(G1:G5,G1:G5,0)))} 

现在这个公式有点笨拙,我希望把它翻译成一个UDF,使它更容易处理。 我不熟悉VBA,经过一番search之后,我意识到VBA逻辑的工作方式与Excel公式逻辑完全不同。 具体来说,我不认为我可以像在SUMPRODUCT函数中那样使用=来强制我的查找网格在VBA中变为TRUE / FALSE值。 我是否必须学习VBA才能将其作为UDF来实现,还是有其他解决scheme? 实际上,我的查找网格(A1:E5)将在外部工作簿中。

如果我的尝试完全不符合标准,我可以接受其他解决scheme。 我知道匹配公式函数支持通配符,但是在名称差别很大的情况下,它不起作用,所以我希望能有更全面的内容。

这是我第一次在这里问一个问题,所以请让我知道,如果这是属于不同的地区,或者有任何礼节我忽略。