我很难找到一个公式来完全满足我的需求。
我有两个列表,一个包含搜索短语(如“电视的声音条”),另一个包含单个术语,如(“电视”,“声音”,“酒吧”)的列表。
我的目标是查看单个词表中是否有与每个关键字匹配的搜索词组。
因此,对于“电视的条形音箱”,我需要将这些单词中的每一个都包含在术语列表中,以便它作为TRUE返回。而且,更复杂的是,如果我有搜索词组“ Soundbar”和“ Sound Bar”,那么如果两个词都在列表中,则它们都应该通过。
任何想法都是最好的方法。
我尝试了以下失败:
单个术语=“ TV”,“ Sound”,“ Bars”之类的术语列表 短语=搜索短语,例如“电视的条形音箱”
目标是创建一个公式,使“电视条形音箱”中的每个单词都表示“是”。
=SUMPRODUCT(--ISNUMBER(SEARCH(individual terms,phrase)))=COUNTA(individual terms)
=IF(ISNUMBER(SEARCH(phrase,individual terms)), "Yes", "No")
=SUMPRODUCT(--ISNUMBER(SEARCH(individual terms,phrase)))>0
答案 0 :(得分:2)
这将解析字符串并计算匹配项,然后将其与字符串中“单词”的数量进行比较。如果它们匹配,它将返回Yes
=IF(SUMPRODUCT(COUNTIF(D:D,TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",999)),(ROW($XFD$1:INDEX($XFD:$XFD,LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1))-1)*999+1,999))))=LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1,"Yes","No")
答案 1 :(得分:2)
假装您具有这样的数据设置:
将D列制作为Excel表(带有Insert-> Table)并命名为tblTerms
。这样,您可以动态地从列表中添加和删除术语。
现在在单元格B2中并向下复制此公式:
=SUMPRODUCT(--(COUNTIF(tblTerms[Search Terms],TRIM(MID(SUBSTITUTE(A2," ",REPT(" ",LEN(A2))),LEN(A2)*(ROW(A$1:INDEX(A:A,LEN(A2)-LEN(SUBSTITUTE(A2," ",""))+1))-1)+1,LEN(A2))))=0))=0
请注意,您必须将“ Soundbars”分别添加到搜索词列表中。 Excel实际上没有任何方法可以识别复合词中的单个词,并且即使使用VBA,尝试执行此操作也非常麻烦。