Table of contents
本教程展示了如何在Excel中进行不区分大小写和精确匹配的文本字符串比较。 你将学习一些公式,通过两个单元格的值、字符串长度或特定字符的出现次数来比较,以及如何比较多个单元格。
在使用Excel进行数据分析时,准确性是最重要的关注点。 不正确的信息会导致错过最后期限、误判趋势、错误的决策和收入损失。
虽然Excel公式总是完全正确的,但它们的结果可能是错误的,因为一些有缺陷的数据渗透到了系统中。 在这种情况下,唯一的补救措施是检查数据的准确性。 手动比较两个单元格没什么大不了的,但要发现成百上千的文本字符串之间的差异几乎是不可能的。
本教程将教你如何将单元格比较这一繁琐且容易出错的任务自动化,以及在每个特定情况下最好使用什么公式。
如何在Excel中比较两个单元格
在Excel中,有两种不同的方法来比较字符串,这取决于你是寻求大小写敏感的比较还是不敏感的比较。
不区分大小写的公式来比较2个单元格
要比较Excel中两个单元格的无视情况,可以使用这样一个简单的公式。
=A1=B1
其中A1和B1是你要比较的单元格。 该公式的结果是布尔值TRUE和FALSE。
如果你想输出你自己的匹配和差异的文本,将上述语句嵌入IF函数的逻辑测试中。 例如:
=IF(A1=B1, "等于", "不等于")
正如你在下面的截图中所看到的,这两个公式对文本字符串、日期和数字的比较同样出色。
在Excel中比较字符串的大小写公式
在某些情况下,不仅要比较两个单元格的文本值,还要比较字符的大小写,这一点很重要。 对大小写敏感的文本比较可以用Excel EXACT函数来完成。
EXACT (text1, text2)在哪里? 文本1 和 文本2 是你要比较的两个单元格。
假设你的字符串在A2和B2单元格中,公式如下。
=EXACT(A2, B2)
结果是,如果文本字符串完全匹配,包括每个字符的大小写,你会得到TRUE,否则得到FALSE。
如果你想让EXACT函数提供一些其他的结果,可以把它嵌入到IF公式中,并输入你自己的文本,用于 value_if_true 和 value_if_false 争论。
=IF(EXACT(A2 ,B2), "完全相等", "不相等")
下面的截图显示了在Excel中进行大小写字符串比较的结果。
如何在Excel中比较多个单元格
要想在一行中比较2个以上的单元格,请使用上述例子中讨论的公式,并结合AND运算符。 下面是全部细节。
不区分大小写的公式来比较2个以上的单元格
根据你想显示结果的方式,利用以下公式之一。
=and(a2=b2, a2=c2)
或
=IF(AND(A2=B2, A2=C2), "相等", "不相等")
如果所有的单元格都包含相同的值,AND公式返回TRUE,如果有任何值不同,则返回FALSE。 IF公式输出你输入的标签," 平等 "和" 不平等 "在这个例子中。
正如下面的截图所示,该公式在任何数据类型下都能完美工作--文本、日期和数字值。
对字母敏感的公式来比较几个单元格中的文本
要将多个字符串相互比较,看它们是否完全匹配,可使用以下公式。
=and(exact(a2,b2), exact(a2, c2))
或
=IF(AND(EXACT(A2,B2), EXACT(A2, C2)), "完全相等", "不相等")
就像前面的例子一样,第一个公式提供 "真 "和 "假 "的值,而第二个公式显示你自己的匹配和差异文本。
将一系列的细胞与一个样本细胞进行比较
下面的例子显示了如何验证给定范围内的所有单元格是否包含与样本单元格相同的文本。
不区分大小写的公式,将单元格与样本文本进行比较
如果字符大小写并不重要,你可以使用下面的公式来比较单元格和样本。
ROWS( 范围 )*COLUMNS( 范围 )=COUNTIF( 范围 , 样品池 )在IF函数的逻辑测试中,你比较两个数字。
- 指定范围内的单元格总数(行数乘以列数),以及
- 含有与样本单元格中相同数值的单元格的数量(由COUNTIF函数返回)。
假设样本文本在C2,要比较的字符串在A2:B6范围内,公式如下。
=rows(a2:b6)*columns(a2:b6)=countif(a2:b6,c2)
为了使结果更方便用户使用,即输出 "全部匹配 "和 "不全部匹配 "这样的结果,而不是TRUE和FALSE,可以像我们在前面的例子中那样使用IF函数。
=IF(ROWS(A2:B6)*COLUMNS(A2:B6)=COUNTIF(A2:B6,C2), "全部符合", "不全部符合")
如上面的截图所示,该公式可以完美地处理一系列的文本字符串,但它也可以用来比较数字和日期。
区分大小写的公式,将字符串与样本文本进行比较
如果字符大小写有区别,你可以使用以下数组公式将字符串与样本文本进行比较。
IF(ROWS( 范围 )*COLUMNS( 范围 )=SUM(--EXACT( 样品室 , 范围 )), " text_if_match ", " text_if_not match ")源范围在A2:B6,样本文本在C2,该公式的形状如下。
=IF(ROWS(A2:B6)*COLUMNS(A2:B6)=SUM(--EXACT(C2, A2:B6)), "全部相符", "不全部相符")
与普通的Excel公式不同,数组公式是通过按Ctrl + Shift + Enter完成的。 如果输入正确,Excel将数组公式包围在{大括号}中,如截图所示。
如何通过字符串长度比较两个单元格
有时你可能想检查每一行的文本字符串是否包含相同数量的字符。 这项任务的公式非常简单。 首先,你用LEN函数得到两个单元格的字符串长度,然后比较这些数字。
假设要比较的字符串在A2和B2单元格中,使用以下任一公式。
=len(a2)=len(b2)
或
=IF(LEN(A2)=LEN(B2), "相等", "不相等")
正如你已经知道的,第一个公式返回布尔值TRUE或FALSE,而第二个公式输出你自己的结果。
正如上面的截图所示,这些公式既适用于文本字符串,也适用于数字。
提示:如果两个看似相等的字符串返回不同的长度,最可能的问题是在 领导 或 蔓生的 空间 在这种情况下,请使用TRIM函数去除多余的空格。 详细的解释和公式例子可以在这里找到:如何在Excel中修剪空格。
通过一个特定字符的出现来比较两个单元格
这是Excel比较字符串教程的最后一个例子,它展示了一个相当特殊的任务的解决方案。 假设你有两列文本字符串,其中包含一个对你很重要的字符。 你的目标是检查每一行中的两个单元格是否包含相同数量的给定字符的出现。
为了使事情更清楚,考虑下面的例子。 假设,你有两个已发货(B列)和已收到(C列)的订单列表。 每一行包含一个特定项目的订单,其唯一标识符包括在所有订单的ID中,并列在A列的同一行(请看下面的截图)。 你要确保每一行包含相同数量的已发货和已收到的订单具有该特定ID的项目。
为了解决这个问题,请写出一个具有以下逻辑的公式。
- 首先,使用SUBSTITUTE函数将唯一标识符替换为空。
SUBSTITUTE(A1, character_to_count,"" )
- 然后,计算唯一标识符在每个单元格中出现的次数。 为此,得到不含唯一标识符的字符串长度,并从字符串的总长度中减去。 例如,这部分应单独为单元格1和单元格2编写。
LEN(cell 1) - LEN(SUBSTITUTE(cell 1, character_to_count, "") )
和
LEN(cell 2) - LEN(SUBSTITUTE(cell 2, character_to_count, ""))
- 最后,你通过在上述部分之间放置平等符号(=)来比较这两个数字。
LEN( 细胞2 ) - len(substitutional( 细胞2 , 字符到计数 , ""))
在我们的例子中,唯一标识符在A2中,要比较的字符串在B2和C2单元格中。 因此,完整的公式如下。
=len(b2)-len(substitute(b2,$a2,""))=len(c2)-len(substitute(c2,$a2,"")
如果单元格B2和C2包含A2中相同数量的字符,该公式返回TRUE,否则返回FALSE。 为了使结果对用户更有意义,你可以在IF函数中嵌入该公式。
=IF(LEN(B2)-LEN(SUBSTITUTE(B2, $A2,"))=LEN(C2)-LEN(SUBSTITUTE(C2, $A2,"), "相等", "不相等")
正如你在上面的截图中所看到的,尽管有一些额外的复杂情况,但这个公式工作得很完美。
- 要计算的字符(唯一标识符)可以出现在文本字符串的任何地方。
- 字符串包含可变数量的字符和不同的分隔符,如分号、逗号或空格。
这就是在Excel中比较字符串的方法。 如果想仔细看看本教程中讨论的公式,欢迎下载Excel比较字符串工作表。 感谢你的阅读,希望下周在我们的博客上见到你。