Excel公式:用OR逻辑计算行数

220 多个excel快捷键速查表,适用Windows和Mac。工作效率提高10倍。免费下载>>>

下载 “excel快捷键速查表” Excel快捷键速查表.zip – 已下载54次 – 3 MB

Excel 公式:使用 OR 逻辑计算行数

概括 

要使用 OR 逻辑计算行数,您可以使用基于SUMPRODUCT 函数的公式。在所示示例中,G6 中的公式为:

=SUMPRODUCT((group=“a”)*((color1=“red”)+(color2=“red”)>0))

其中group (B5:B15)、color1 (C5:C15) 和color2 (D5:D15) 被命名为 range

解释 

Excel 中比较棘手的问题之一是使用“或逻辑”计算一组数据中的行数。有两种基本情况:(1)您想要计算列中的值为“x”或“y”的行数(2)您想要计算值“x”存在于一列或另一列中的行数.

在此示例中,目标是计算 group = “a” AND Color1 OR Color2 为“red”的行。这意味着我们正在处理上面的场景 2。

使用 COUNTIFS

您可能首先会使用COUNTIFS 函数,它本机处理多个条件。但是,COUNTIFS 函数使用 AND 逻辑连接条件,因此所有条件都必须为 TRUE才能包含在计数中:

=COUNTIFS(group,“a”,color1,“red”,color2,“red”) // returns 1

这使得 COUNTIFS 不可行,除非我们使用多个 COUNTIFS 实例:

=COUNTIFS(group,“a”,color1,“red”)+COUNTIFS(group,“a”,color2,“red”)COUNTIFS(group,“a”,color1,“red”,color2,“red”)

翻译:计数组为“a”且颜色1为“红色”的行+计数组为“a”且颜色2为“红色”的行-计数组为“a”且颜色1为“红色”且颜色2为“红色”(避免重复计算)。

这行得通,但你可以看到这是一个有点复杂和多余的公式。

使用布尔逻辑

更好的解决方案是使用布尔逻辑,并使用SUMPRODUCT 函数处理结果。(如果您需要布尔代数的入门知识,此视频提供了介绍。)在所示示例中,G6 中的公式为:

=SUMPRODUCT((group=“a”)*((color1=“red”)+(color2=“red”)>0))

其中group (B5:B15)、color1 (C5:C15) 和color2 (D5:D15) 被命名为 range

问题的第一部分是测试 group = “a” 我们这样做:

(group=“a”)

因为范围 B5:B15 包含 11 个单元格,所以此表达式返回一个包含 11 个 TRUE 和 FALSE 值的数组,如下所示:

{TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}

每个 TRUE 代表组为“A”的行。

接下来,我们需要检查 column1 或 column2 中的值“red”。我们用加法 (+) 连接的两个表达式来做到这一点,因为加法对应于布尔代数中的 OR 逻辑:

(color1=“red”)+(color2=“red”)

Excel 在任何数学运算期间自动将 TRUE 和 FALSE 值计算为 1 和 0,因此上述表达式的结果是这样的数组:

{2;0;0;1;1;0;1;0;0;0;1}

数组中的第一个数字是 2,因为 Color1 和 Color2 在第一行中都是“红色”。由于下面解释的原因,我们需要通过检查大于零的值来防止这种情况:

({2;0;0;1;1;0;1;0;0;0;1})>0

现在我们再次有一个 TRUE 和 FALSE 值的数组:

{TRUE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE}

下表总结了 Excel 如何评估上述颜色逻辑:

How color logic is evaluated in this formula

此时,我们在一个数组中测试了 Group =”a” 的结果:

{TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE;FALSE;FALSE}

以及在另一个数组中测试 Color1 或 Color2 中的“红色”的结果:

{TRUE;FALSE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;FALSE;FALSE;TRUE}

下一步是将这两个数组与“AND 逻辑”结合在一起。为此,我们使用乘法 (*),因为乘法对应于布尔代数中的 AND 逻辑。

将两个数组相乘后,我们得到一个 1 和 0 的数组,直接传递给 SUMPRODUCT 函数:

=SUMPRODUCT({1;0;0;0;1;0;0;0;0;0;0})

SUMPRODUCT 函数返回数字之和 2 作为最终结果。这是 group = “a” AND Color1 OR Color2 为 “red” 的行数。

避免重复计算

我们不想重复计算 Color1 和 Color2 都是“红色”的行。这就是为什么我们在下面的代码中检查 (color1=”red”)+(color2=”red”) 的值是否大于零的原因:

((color1=“red”)+(color2=“red”))>0

如果没有此检查,数据中第一行的 2 将显示在最终数组中,并导致公式错误地返回 3 作为最终计数。

过滤器选项

布尔逻辑的一个优点是它可以与Excel 的最新函数完美配合,例如XLOOKUPFILTER。例如,FILTER 函数可以使用与上面解释的完全相同的逻辑来提取匹配的行:

=FILTER(B5:D15,(group=“a”)*((color1=“red”)+(color2=“red”)>0))

FILTER 的结果是符合条件的两行,如下所示:

FILTER rows with OR logic

220 多个excel快捷键速查表,适用Windows和Mac。工作效率提高10倍。免费下载>>>

下载 “excel快捷键速查表” Excel快捷键速查表.zip – 已下载54次 – 3 MB

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注