Excel 使用 IF 和 AND 函数对数组进行 MEDIAN 运算并设置多个条件

Excel 使用 IF 和 AND 函数对数组进行 MEDIAN 运算并设置多个条件

我想根据满足的条件确定一列中的值的中位数其他列。我使用的是 MS Excel。

我知道我必须使用 IF 函数将 MEDIAN 函数处理为数组 (ctrl + shft + enter),如果我在 IF 语句中只使用 1 个条件,这种方法就可以正常工作。但是,一旦我尝试合并2使用 AND 函数的条件,我得到中位数为 0(即,它不起作用)。

如何根据多个其他列的匹配条件计算一列中的中值?

例子

假设我想找到 A = 1 且 B = x 时 C 中的中值:

A   B   C
1   x   10
1   x   20
1   y   30
1   y   40
2   x   10
2   x   20
2   y   30
2   y   40
3   x   10
3   x   20
3   y   30
3   y   40
4   x   10
4   x   20
4   y   30
4   y   40
5   x   10
5   x   20
5   y   30
5   y   40

#Here is my attempt using IF and AND:
{=MEDIAN(IF(AND(A2:A21=1,B2:B21="x"),C2:C21))}    #DEOSN'T WORK: should be 15, but it's 0

#subcomponents of above work fine on their own:
{=MEDIAN(IF(A2:A21=1,C2:C21)) }    #equals 25 as expected
{=MEDIAN(IF(B2:B21="x",C2:C21))}   #equals 15 as expected

我该如何使其工作以及/或者我应该使用其他方法吗?

答案1

避免使用该AND函数,IF而使用嵌套的 s。

具体来说:

=MEDIAN(IF(A2:A21=1,IF(B2:B21="x",C2:C21)))

问题是,它AND在数组上下文中不能按照您的预期工作——它不会对AND每对元素进行运算并生成一个数组,而是对两个数组的所有元素进行“与”运算以得出单个标量结果。

AND您原来的公式正在评估对“ ”的单个输出的整个调用FALSE(因为两个数组中的每个元素并非都满足比较)。

答案2

我不知道它为什么有效,但经过一番折腾后我发现以下方法可以实现我的目标:

{=MEDIAN(IF((A2:A21=1)*(B2:B21="x"),C2:C21))}   #gives correct 15

(再次记住使用 ctrl + shft + enter 将其作为数组进行处理)

我的猜测是,该AND函数默认只生成一个TRUEFALSE,因此无法在此上下文中工作(这需要生成一个由 1 和 0 组成的数组)。但是,如果我将每一列作为其自己的数组进行处理,我会为每个子条件生成一个由 1 和 0 组成的字符串。如果我随后将多个条件数组相乘,结果本身就是一个由 1 和 0 组成的数组,其中只有当两个相应子条件的所需条件都为真时,1 才会存在。

我确信有人可以在评论中证实/解释这一点。

相关内容