excel表格_excel函数公式大全_execl从入门到精通
Excel关键词与关键词列表的比对2024-03-05 18:02:20
我们之前讲过一个关键字完全包含匹配的公式,为什么这个叫关键词,因为上次讲的是把一个词拆分成一个一个的字符,然后与列表比对,找出完全包含在列表里的关键字。
今天要讲的这个公式稍有不同,今天要将的是词与词之间的完全匹配,不是字与字之间的匹配:
对于这种匹配,再用find/search函数经行匹配,就会出现问题,用FIND来匹配“华为”与“华为荣耀”就会被认为是匹配上了,但是我们要求的是必须是完全匹配。
那么我们要用什么函数来匹配呢?其实仍然应该有很多种匹配的方法,想象一下,如果我们把B2单元格内的关键词表打开变成每个单元格一个词的列表,是不是就有很多查询方法可以使用了。
如果能把列表展开,用MATCH、VLOOKUP、LOOKUP函数都能查找出来。所以首要问题是展开列表。
展开列表,我们再公式组合中讲过TRIM+MID+SUBSTITUTE分列公式组合,正好适用:
=TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",LEN(B2))),(ROW($1:$99)-1)*LEN(B2)+1,LEN(B2)))
有些变化的地方就是MID函数的第二参数,原来的第二参数是一个数字,而今天我们需要的是一个数组,因为不知道关键词表中的关键词一共有几个,所以我们大致给了一个1-99,这样一个范围,所以就用ROW($1:$99)替换了分列组合中的ROW(1:1)。
相当于我们把B2单元格拆分成了由99个词组成的一个关键词列表,供我们后续的匹配。
MATCH
MATCH函数一定要记得第三参数,最后一个逗号代表第三参数选择0,精确匹配。
=IF(ISERROR(MATCH(A2,TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",LEN(B2))),(ROW($1:$99)-1)*LEN(B2)+1,LEN(B2))),)),"N","Y")
如果没有这个逗号,匹配的结果就有可能出错。
VLOOKUP
同样的VLOOKUP的第四参数一定也要选择精确匹配,0,才能得到正确的结果。
=VLOOKUP(A2,TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",LEN(B2))),(ROW($1:$99)-1)*LEN(B2)+1,LEN(B2))),1,0)
这个公式我没有做IF判断,如果要得到和MATCH一样的结果,就在外面嵌套一层。
LOOKUP
LOOKUP公式有点长,主要是二分法判断的条件,与结果,两次引用了列表。
=LOOKUP(1,0/(TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",LEN(B2))),(ROW($1:$99)-1)*LEN(B2)+1,LEN(B2)))=A2),TRIM(MID(SUBSTITUTE(B2,",",REPT(" ",LEN(B2))),(ROW($1:$99)-1)*LEN(B2)+1,LEN(B2))))
三个公式相比,还是觉得MATCH更简简洁一些。
更多组合公式请参阅:
标签: excel主要关键字