您可以使用数组公式执行此操作。对于固定范围,公式C2
为
=IF(MAX(IFERROR(SEARCH($A$2:$A$5,$B2),0))>0,"yes","no")
确保使用Ctrl+ Shift+ 将其作为数组公式输入Enter。当您在公式的两端出现大括号{}时,您就会知道它起作用。
如果希望范围是动态的,一种好方法是定义一个命名范围。如果您尝试使用所有列,A:A
则所有内容都会返回,yes
因为如果要查找的字符串为空,则SEARCH
和和FIND
函数都将返回TRUE
。由于A:A
列表中将包含空格,因此所有结果将是yes
有用的,这对您没有帮助。相反,我们需要定义一个动态的命名范围。有几种方法可以执行此操作,但是我想打开“名称管理器”(位于“定义名称”部分的“公式”功能区的中间)。打开它,然后单击左上方的“新建”。给它起一个喜欢的名字Keywords
和一个“引用”公式
=OFFSET(Sheet1!$A$1,1,0,MATCH(TRUE,INDEX(ISBLANK(Sheet1!$A:$A),0,0),0)-2)
现在您可以将公式更改C1
为此(仍使用Ctrl+ Shift+ 输入Enter)
=IF(MAX(IFERROR(SEARCH(Keywords,$B2),0))>0,"yes","no")
警告#1
SEARCH
不区分大小写。如果要区分大小写的搜索,请将其替换为FIND
。
警告#2
动态命名范围的公式假定关键字列表中没有空格。它将引用所有单元格,A2
直到第一个空白之前的单元格为止。当然,这还假设某个地方有空格,A:A
这意味着您的关键字列表长度必须少于1,048,575个项目。
洞穴#3
您可以在没有命名范围的情况下执行此操作,但是公式会变得冗长且难以遵循。但是,它的确将所有内容打包为一个公式。如果您的数据非常大,建议您使用命名范围,因为它可以加快计算速度。综上所述,公式C2
为
=IF(MAX(IFERROR(SEARCH(OFFSET(Sheet1!$A$1,1,0,MATCH(TRUE,INDEX(ISBLANK(Sheet1!$A:$A),0,0),0)-2),$B2),0))>0,"yes","no")