Table of contents
该教程提供了一些 "Excel如果包含 "公式的例子,显示了如何在目标单元格包含所需值的情况下返回另一列的东西,如何用部分匹配进行搜索,以及用OR以及AND逻辑测试多个标准。
在Excel中最常见的任务之一是检查一个单元格是否包含一个感兴趣的值。 那可以是什么样的值呢? 就是任何文本或数字,特定的文本,或任何值(不是空单元格)。
在Excel中,"如果单元格包含 "公式有几种变化,这取决于你想找到什么值。 一般来说,你将使用IF函数做一个逻辑测试,当满足条件(单元格包含)时返回一个值,和/或当不满足条件(单元格不包含)时返回另一个值。 下面的例子涵盖了最常见的情况。
如果单元格包含任何值,那么
首先,让我们看看如何找到包含任何内容的单元格:任何文本、数字或日期。 为此,我们将使用一个简单的IF公式来检查非空白单元格。
IF( 电池 "", 返回值 , "")例如,如果同一行的A列单元格包含任何数值,要在B列返回 "非空白",你可以在B2中输入以下公式,然后双击右下角的绿色小方块,将公式复制到下一列。
=IF(A2"", "非空白", "")
其结果将与此相似。
如果单元格包含文本,那么
如果你想只找有文本值的单元格,而忽略数字和日期,那么就用IF与ISTEXT函数结合使用。 下面是一个通用公式,如果目标单元格包含某个值,则返回另一个单元格中的某个值 任何文本 :
IF(ISTEXT( 电池 ), 返回值 , "")假设你想在B列中插入 "是 "字,如果A列中的单元格包含文本。 要做到这一点,请在B2中输入以下公式。
=IF(ISTEXT(A2), "是", "" )
如果单元格包含数字,那么
以类似的方式,你可以识别具有数字值(数字和日期)的单元格。 为此,请使用IF函数和ISNUMBER。
IF(ISNUMBER( 电池 ), 返回值 , "")如果A列中的对应单元格包含任何数字,下面的公式在B列中返回 "是"。
=IF(ISNUMBER(A2), "是", "")
如果单元格包含特定的文本
寻找包含特定文本(或数字或日期)的单元格很容易。 你写一个常规的IF公式,检查目标单元格是否包含所需的文本,然后在 value_if_true 争论。
IF( 电池 =" 案文 ", 返回值 , "")例如,要找出A2单元格是否包含 "苹果",可以使用这个公式。
=IF(A2="苹果", "是", "" )
如果单元格不包含特定文本
如果你正在寻找相反的结果,即如果目标单元格不包含指定的文本("苹果"),则返回一些值到另一列,然后执行以下操作之一。
提供一个空字符串(""),在 value_if_true 参数,以及返回在 value_if_false 争论。
=IF(A2="苹果", "", "不是苹果")
或者,把 "不等于 "运算符放在 逻辑_测试 和文本中返回 value_if_true。
=IF(A2 "apples", "Not apples", "" )
无论哪种方式,该公式都会产生这个结果。
如果单元格包含文本:区分大小写的公式
要强制你的公式区分大写和小写字符,请使用EXACT函数,该函数检查两个文本字符串是否完全相等,包括字母大小写。
=IF(EXACT(A2, "APPLES"), "是", "")
你也可以在某个单元格(例如C1)中输入模型文本字符串,用$符号固定单元格参考($C$1),然后将目标单元格与该单元格进行比较。
=IF(EXACT(A2,$C$1), "是", "")
如果单元格包含特定的文本字符串(部分匹配)
我们已经完成了琐碎的任务,接下来是更具挑战性和更有趣的任务 :) 在这个例子中,需要三个不同的函数来找出一个给定的字符或子串是否是单元格内容的一部分。
如果(isnumber(search(" 文本" , 电池 )), 返回值 ,"")由内而外的工作,以下是该公式的作用。
- SEARCH函数搜索一个文本字符串,如果找到该字符串,返回第一个字符的位置,否则返回#VALUE!错误。
- ISNUMBER函数检查SEARCH是否成功或失败。 如果SEARCH返回了任何数字,ISNUMBER返回TRUE。 如果SEARCH导致错误,ISNUMBER返回FALSE。
- 最后,IF函数对逻辑测试中出现TRUE的单元格返回指定值,否则返回空字符串("")。
现在,让我们看看这个通用公式在现实生活中的工作表中是如何运作的。
如果单元格中包含某些文本,则在另一个单元格中放入一个值
假设你有一个A列的订单列表,你想找到有特定标识符的订单,比如 "A-"。 这个任务可以通过这个公式完成。
=IF(ISNUMBER(SEARCH("A-",A2)), "有效",")
你可以在一个单独的单元格(E1)中输入这个字符串,并在公式中引用这个单元格,而不是在公式中硬编码。
=IF(ISNUMBER(SEARCH($E$1,A2)), "Valid",")
为了使公式正常工作,一定要用$符号锁定包含字符串的单元格的地址(绝对单元格引用)。
如果单元格包含特定的文本,将其复制到另一列
如果你想把有效单元格的内容复制到其他地方,只需提供被评估单元格(A2)的地址,在 value_if_true 争论。
=if(isnumber(search($e$1,a2)),a2,"" )
下面的屏幕截图显示了结果。
如果单元格包含特定的文本:大小写敏感的公式
在上述两个例子中,公式是不区分大小写的。 在你处理大小写敏感数据的情况下,使用FIND函数而不是SEARCH来区分字符大小写。
例如,以下公式将只识别大写字母 "A-"的订单,忽略小写字母 "a-"。
=IF(ISNUMBER(FIND("A-",A2)), "Valid",")
如果单元格包含许多文本字符串中的一个(OR逻辑)
要确定单元格至少包含你要搜索的许多东西中的一个,请使用以下公式之一。
IF或ISNUMBER搜索公式
最明显的方法是单独检查每个子串,如果发现至少有一个子串,让OR函数在IF公式的逻辑测试中返回TRUE。
如果(or(isnumber(search(" 绳子1 ", 电池 ), isnumber(搜索(" 绳子2 ", 电池 ))), 返回值 , "")假设你在A列有一个SKU列表,你想找到那些包括 "连衣裙 "或 "裙子 "的SKU。 你可以通过使用这个公式来完成它。
=IF(OR(ISNUMBER(SEARCH("dress",A2)),ISNUMBER(SEARCH("skirt",A2))), "Valid",")
这个公式对几个项目来说效果很好,但如果你想检查很多东西,它肯定不是办法。 在这种情况下,更好的办法是使用SUMPRODUCT函数,如下例所示。
SUMPRODUCT ISNUMBER搜索公式
如果你要处理多个文本字符串,单独搜索每个字符串会使你的公式太长,难以阅读。 一个更优雅的解决方案是将ISNUMBER SEARCH组合嵌入SUMPRODUCT函数中,看结果是否大于零。
sumproduct(--isnumber(搜索( 字符串 , 电池 )))>0例如,要找出A2是否包含在单元格D2:D4中输入的任何单词,请使用这个公式。
=SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0
另外,你可以创建一个包含要搜索的字符串的命名范围,或者直接在公式中提供这些词。
=SUMPRODUCT(--ISNUMBER(SEARCH({"dress", "skirt", "jeans"},A2)))>0
无论哪种方式,结果都将与此类似。
为了使输出更加方便,你可以将上述公式嵌套到IF函数中,并返回你自己的文本而不是TRUE/ALSE值。
=IF(SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0, "有效", "")
这个公式如何运作
在核心部分,你将ISNUMBER与SEARCH一起使用,正如前面的例子所解释的那样。 在这种情况下,搜索结果以{TRUE;FALSE;FALSE}这样的数组形式表示。 如果一个单元格至少包含一个指定的子字符串,数组中就会有TRUE。 双重单选运算符(--)将TRUE/FALSE值分别胁迫为1和0,并提供一个数组,如{最后,SUMPRODUCT函数将这些数字相加,我们挑选出结果大于0的单元格。
如果单元格包含几个字符串(AND逻辑),则
当你想找到包含所有指定文本字符串的单元格时,可以使用已经熟悉的ISNUMBER SEARCH组合和IF AND。
如果(and(isnumber(search(" 绳子1 ", 电池 ), isnumber(搜索(" 绳子2 ", 电池 ))), 返回值 ,"")例如,你可以用这个公式找到同时包含 "连衣裙 "和 "蓝色 "的SKU。
=IF(AND(ISNUMBER(SEARCH("dress",A2)),ISNUMBER(SEARCH("blue",A2)), "Valid",")
或者,你可以在不同的单元格中输入字符串,并在你的公式中引用这些单元格。
=IF(AND(ISNUMBER(SEARCH($D$2,A2)),ISNUMBER(SEARCH($E$2,A2)), "有效",")
作为一个替代解决方案,你可以计算每个字符串的出现次数,并检查每个计数是否大于零。
=IF(AND(COUNTIF(A2, "*dress*")>0,COUNTIF(A2, "*blue*")>0), "有效",")
结果将完全如上面的截图所示。
如何根据单元格值返回不同的结果
如果你想将目标列中的每个单元格与另一个项目列表进行比较,并为每个匹配项返回一个不同的值,请使用以下方法之一。
嵌套的IFs
嵌套IF公式的逻辑是这样的:你用一个单独的IF函数来测试每个条件,并根据这些测试的结果返回不同的值。
IF( 电池 =" lookup_text1 ", " 返回 _ 文本1 ", IF( 电池 =" lookup_text2 ", " 返回 _ 文本2 ", IF( 电池 =" lookup_text3 ", " 返回 _ 文本3 ", "")))假设你在A列有一个项目清单,你想在B列有它们的缩写。要做到这一点,请使用以下公式。
=IF(A2="苹果", "Ap", IF(A2="鳄梨", "Av", IF(A2="香蕉", "B", IF(A2="柠檬", "L", " "))))
关于嵌套IF的语法和逻辑的全部细节,请看Excel嵌套IF--一个公式中的多个条件。
查询公式
如果你正在寻找一个更紧凑和更好理解的公式,使用LOOKUP函数,其查找和返回值作为垂直数组常量提供。
LOOKUP( 电池 , {" lookup_text1 ";" lookup_text2 ";" lookup_text3 ";...}, {" 返回 _ 文本1 ";" 返回 _ 文本2 ";" 返回 _ 文本3 ";...})为了获得准确的结果,请确保将查询值列在 按字母顺序 从A到Z。
=LOOKUP(A2,{"apple";"avocado";"banana";"lemon"},{"Ap";"Av";"B";"L"})
与嵌套的IFs相比,Lookup公式还有一个优势--它能理解 通配符 因此,可以识别部分匹配。
例如,如果A列包含一些种类的香蕉,你可以查询 "*香蕉*",并为所有此类单元格返回相同的缩写("B")。
=LOOKUP(A2,{"apple";"avocado";"*banana*";"lemon"},{"Ap";"Av";"B";"L"})
欲了解更多信息,请参见查找公式作为嵌套IF的替代方案。
Vlookup公式
当处理一个可变的数据集时,在不同的单元格中输入一个匹配的列表,并通过使用Vlookup公式来检索它们可能会更方便,例如。
=vlookup(a2, $d$2:$e$5, 2, false )
欲了解更多信息,请参见Excel VLOOKUP初学者教程。
这就是在Excel中检查单元格是否包含任何数值或特定文本的方法。 下周,我们将继续研究Excel的 "单元格是否包含 "公式,并学习如何对相关单元格进行计数或求和,复制或删除包含这些单元格的整个行,等等。 请继续关注!
实践工作手册
Excel如果单元格包含--公式示例(.xlsx文件)