EXCEL:如何修复嵌套的 AND OR,该 AND OR 在 TRUE 时返回 FALSE

EXCEL:如何修复嵌套的 AND OR,该 AND OR 在 TRUE 时返回 FALSE

代码是在第一行中查找一个字符串,然后根据布尔公式的结果对附近的行和列执行一些操作。最后,我将使用定义的输入单元格名称更改公式中的“范围”。

这是导致我出现错误的公式:

{=AND(
   INDEX(TempTable, MATCH("Ranges", TempColArray, 0) +1, 0) = "—",
   OR(
    ISBLANK(INDEX(TempTable, MATCH("Ranges", TempColArray, 0) +1, 2)),
    BR16 <= INDEX(TempTable, MATCH("Ranges", TempColArray, 0) +1, 2)
   )
  )}

目前,BR16 = 1000

我将其分成几个部分来查看每个部分是否正常工作,结果如下:

当 TRUE 为真时错误地返回 FALSE

更新:我注意到图像上的 OR 公式的第 1 和第 2 个语句是反转的。

为了避免误解,“第一条语句”是指 OR/AND 公式的第一行/逻辑表达式,而 AND 公式的第二条语句是 OR 公式。

为了强调问题,AND 公式返回的是 FALSE,而它应该返回 TRUE。

正确或错误 = 正确

真实且真实=真实

真且(真或假)= 真

但是,对于最后一个,excel 返回的是 FALSE。

这是我为了测试公式而创建的表格(TempTable)(绿线左边是TempColArray):

测试表

答案1

这是一个数组公式。INDEX 公式将返回三个布尔值的数组。OR 语句返回单个布尔值。当您使用“评估公式”工具逐一执行公式时,您可以看到这一点。所有布尔值的组合值为 FALSE。

为了返回 TRUE,AND() 语句中的所有值都必须为真。这就是您的公式返回 FALSE 的原因。如果不进一步了解业务逻辑和要计算的内容,就无法回答如何修复它。

在此处输入图片描述

答案2

我发现了错误。

在 INDEX 函数中,当我想选择表格的第一列时,我将 0 作为列。

对于这个,我应该填 1。

通过输入 0,INDEX 函数将返回所选行中所有单元格的值,而不仅仅是第一行的值。

相关内容