2017-05-03 66 views
1

我有一个很大的关键字电子表格,需要按照它们的根名称对它们进行分组。每个关键字都包含附有地理位置或其他术语的短语中的词根(例如树根删除波士顿,其中的根词是树)。反向索引匹配关键字

我有一列包含列B中的所有关键字(〜30,000)和列Z中73个根项的列表。我想比较列B中的关键字和列Z中的根项,并返回根长成C列。

我试过几个数组公式,比赛,vlookup等没有用。

+0

你可以使用'Instr()'函数。但是,您必须遍历所有73个根项,或使用73个辅助列来确定根项是否在字符串中。调用30K * 73 instr公式将会对您的应用程序造成巨大的负担。在这种情况下,VBA解决方案将是最好的解决方案。这里是'instr()'的一些信息https://www.techonthenet.com/excel/formulas/instr.php – Luuklag

+0

不完全是一个“重复”的问题,但在这个问题上的答案有你需要的功能,我认为? http://stackoverflow.com/questions/8313919/excel-search-for-a-list-of-strings-within-a-particular-string-using-array-formu – Wedge

回答

0

如果所有“根词”将成为“关键字”中的第一个词,那么下面的词将会与您匹配。我将假设你的关键字列表在B1单元格开始,这个公式将被输入到单元格C1中。

{=INDEX($Z$1:$Z$73,MATCH(1,SEARCH($Z$1:$Z$73,B1,1),0))} 

这是一个数组公式,因此需要输入Shift + Ctrl + Enter。如果根词的位置不是第一个词,我需要再考虑一下。

+0

谢谢 - 我试过 - 根项是所有情况下的第一个词。 –

+0

完美工作 - 谢谢 –

+0

乐意帮忙。如果它确实回答你的问题,请接受这个答案。 – Kyle

0

您可以使用C1以下几点:

=INDEX($Z$1:$Z$73,MAX(IF(ISERROR(FIND($Z$1:$Z$73,B1)),-1,1)*ROW($Z$1:$Z$73))) 

数组公式按按Ctrl + + 在同一时间进入
只要有根的位置是它会找到它