检查单元格是否包含动态列表中的任何单词


1

我想使用一个公式填充“结果”单元格。我需要它来检查相邻的“ CHECKED CELL”是否包含“ KEYWORDS”单元格中列出的任何单词。

理想情况下,我可以随意将新单词添加到“关键字”列表中。因此,我一直在尝试使范围类似“ $ A $ 2:$ A”。

示例-[C2]:“ [B2]是否包含{$ A $ 2:$ A}中的任何单词”?

我一直无法找到一种通过公式来完成此任务的方法。有任何想法吗?


[A1]关键字

[A2]狗

[A3]松鼠

[A4]驼鹿

[A5]猫


[B1]检查的单元格

[B2] alkj moose adfli

[B3] AMSCRAM

[B4] 124 liML

[B5]狗林波


[C1]结果

[C2]是

[C3]否

[C4]否

[C5]是

Answers:


3

您可以使用数组公式执行此操作。对于固定范围,公式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")

这似乎工作正常。太好了,我感谢您的帮助。
德文·默多克

0

试试这个小的用户定义函数(UDF):

Public Function MultiMatch(sIN As String, rng As Range) As String
    Dim r As Range
    MultiMatch = "no"

    For Each r In rng
        If InStr(1, sIN, r.Text) > 0 Then
            MultiMatch = "yes"
            Exit Function
        End If
    Next r
End Function

用户定义函数(UDF)易于安装和使用:

  1. ALT-F11弹出VBE窗口
  2. ALT-I ALT-M打开一个新模块
  3. 将内容粘贴并关闭VBE窗口

如果您保存工作簿,则UDF将随之保存。如果要在2003年以后使用Excel版本,则必须将文件另存为.xlsm而不是.xlsx

删除UDF:

  1. 如上调出VBE窗口
  2. 清除代码
  3. 关闭VBE窗口

要从Excel使用UDF:

= MultiMatch(B1,$ A $ 1:$ A $ 4)

要总体上了解有关宏的更多信息,请参见:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/zh-CN/library/ee814735(v=office.14).aspx

有关UDF的详细信息,请参见:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

必须启用宏才能使其正常工作!

在此处输入图片说明


@ fixer1234谢谢..............我来看一下..........
加里的学生

@ fixer1234在您链接的问题中,我们不需要VBA,仅需要模糊匹配和索引。
加里的学生

我很感激,但我一直在避免使用VB。
Devin Murdock 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.