(EXCEL) 如何比较 2 列并根据 Excel 中 2 列之间的值差异生成通过/失败评级

问题描述 投票:0回答:1

我正在尝试比较绿色的两列。如果标记为“C”的列中的值均在标记为“C Assay”的列中给出的值的 +/-0.01 范围内,那么我希望它将“PASS”值输出到“Accuracy”旁边的单元格,否则会输出“FAIL”。

示例图片

我设法比较一对值并使用此输出预期结果:

=IF(ABS(G91-H91)<0.01,"PASS","FAIL")

我只是不知道如何让它迭代 2 列中的每一对,以在所有对都满足/不满足上述条件时输出单个“通过/失败”。

我尝试使用这个的几个版本:

=IF(COUNTIF(ABS((G91:G102)-(H91:H102)),<0.01),"PASS","FAIL")

但这没有用。

如有任何帮助,我们将不胜感激。谢谢!

excel if-statement excel-formula countif
1个回答
0
投票

我制作了一个假数据集并添加了一个辅助列只是为了澄清,但您根本不需要它。您需要的公式是:

=IF(SUMPRODUCT(--(ABS($C$2:$C$15-$B$2:$B$15)>0,01))=0;"PASS";"FAIL")

这里棘手的部分是使用 SUMPRODUCT 结合双一元运算符来处理数组。这是它的工作原理:

  1. Excel 首先会解析这部分:
    ABS($C$2:$C$15-$B$2:$B$15)
    它将根据 C Assay 和 C 获得差异的绝对值。这部分的输出将是一个数组,如名为
    just checking
  2. 的列中所示的数组
  3. 上一步被困在
    --(step 1 formula) > 0
    内。这将检查是否有任何差异高于 0.01 并返回
    true/false
    。但请注意,我们使用双一元运算符
    --
    ,因此每个布尔值如果为 true,则将转换为
    1
    ,如果为 false,则转换为
    0
  4. 上一步被困在 SUMProduct 中。它将对上一步中的所有 1 和 0 求和。请注意,如果没有任何差异高于 0.01,则所有输出都将为零,然后所有总和也将为零。如果任何差异高于 0.01,则总和将不会为零。
  5. 现在最后一步只是使用 IF 检查最终总和是否为零,这意味着通过/失败

您可以使用公式选项卡上的评估公式按钮查看其工作原理的每个步骤。 Excel 如何处理单个案例非常有趣。

© www.soinside.com 2019 - 2024. All rights reserved.