在 2 个单元格中匹配 2 组数字

在 2 个单元格中匹配 2 组数字

匹配 2 个单元格中的数据 我有 2 个单元格,其中包含从 2 个不同网站提取的类似数据。D6 中的数据应该是 H6 的缩短版本。我想在 E6 中输入“匹配”或“不匹配”。对于“匹配”,两个单元格中的 2 组数字或 1 组数字和一个单词应该匹配。我尝试使用此公式将 D6 中的最后 1 个字符和前 2 个字符与 H6 匹配

=IF(ISERROR(SEARCH((LEFT(D6,2)*(RIGHT(D6,1))),H6)),"Match","No match")

但仍然得到“匹配”。

由于 D6 中的最后一个字符与单元格 H6 不匹配甚至不存在,因此结果应为“不匹配”

这个公式有什么问题?

答案1

在 Excel 中,在“公式”功能区的“公式审核”部分中,有一个名为“评估公式”的工具。它将允许您逐步执行单元格中的公式并查看其计算方式。

这个公式错在哪里:

查看您使用的公式,您几乎总是会收到错误,因为您将一个字符串乘以另一个字符串作为搜索词。

搜索的语法是:

=SEARCH(FIND TEXT, WITHIN TEXT, OPTIONAL START POINT)

查看您的公式:

=SEARCH((LEFT(D6,2)*(RIGHT(D6,1))),H6)

您的搜索词是:

(LEFT(D6,2)*(RIGHT(D6,1)))

首先,括号太多了。可以简化为:

LEFT(D6,2)*RIGHT(D6,1)

因此,您要告诉 Excel 查找 D6 左侧的前两个字母与 D6 的最后一个字母的乘积。含义:

EN*2

尝试自己进行数学运算。如果字符串左侧有两个数字,则数学运算将起作用,并且字符串将自动转换为数字以进行数学运算。

如果包含字母,则会产生错误,并且由于该错误,您将得到 ISERROR,结果为 true。因此,您始终会得到 MATCH,但 D6 以字符串中的 2 个数字开头和 D6 以数字结尾的情况除外。

如何改善你想做的事情

基本上,您要寻找两个条件为真。您希望两者的开头相等,并且您希望两者的结尾相等。听起来 AND 在这里会起作用。如果两个检查都为真,您希望显示 MATCH 结果。这个概念可能看起来像:

=IF(AND(CONDITION1, CONDITION2), "MATCH", "NO MATCH")

因此,我们将分解您的公式,看看如何使其发挥作用:

=IF(AND(SEARCH(LEFT(D6,2),H6&D6)=1,SEARCH(RIGHT(D6,1),H6&D6,LEN(H6))=LEN(H6),H6<>""),"Match","No match")

让我们来分析一下。您会注意到,在 AND 部分有三个条件检查。

检查 1

SEARCH(LEFT(D6,2),H6&D6)=1

这是在 H6 和添加到其末尾的 D6 的组合中查找 D6 的前两个字符,并查看结果是否为 1。结果为 1 表示在 D6 的第一个位置找到了前两个字符。将 D6 添加到要搜索的文本中的原因是这样如果在 H6 中找不到前两个字母,则会在 D6 中找到它们,从而避免搜索时出现潜在错误。现在,如果 H6 恰好为空白,则意味着您最终可能会得到正确的结果。此“误报”由 AND 函数中的第三个条件处理。

检查 2

SEARCH(RIGHT(D6,1),H6&D6,LEN(H6))=LEN(H6)

与检查 1 类似,这次在 H6 中搜索 D6 的最后一个字符,并将 D6 附加在末尾以避免与检查 1 相同的潜在错误,并且再次存在相同的“误报”可能性,这可以通过第三个条件检查来捕获。这次的变化是我们开始查看 H6 中的最后一个字符,而不是默认的第一个字符。这是通过添加以下内容来实现的:

,LEN(H6)

并且,不是检查搜索结果是否返回第一个位置的 1,而是检查搜索结果是否等于 H6 的最后一个位置。如果您正在查看 D6 的最后两个字符,则必须更改为开始LEN(H6)查看LEN(H6)-1倒数第二个字符,并查看是否在倒数第二个字符处找到了您的字符串。

检查 3

H6<>""

这是快速检查 H6 是否为空。如果 H6 为空,则没有匹配项,因此结果为“无匹配”。

仅当所有检查都为 TRUE 时,IF 函数才会返回“True”。否则 IF 将返回 FALSE

对于您尝试做的一般情况,仍然有改进的空间!

上述操作将检查两列中前两个字符是否匹配以及两列中最后一个字符是否匹配。

相关内容