IF 関数と AND 関数を使用して複数の条件を持つ配列全体の Excel MEDIAN を計算する

IF 関数と AND 関数を使用して複数の条件を持つ配列全体の Excel MEDIAN を計算する

1つの列の値の中央値を、条件を満たす値に基づいて決定したい。他の列。私は MS Excel を使用しています。

MEDIAN関数をARRAY(Ctrl + Shift + Enter)としてIF関数で処理する必要があることはわかっていますが、IF文で条件を1つだけ使用すれば問題なく機能します。しかし、2AND 関数を使用して条件を満たすと、中央値は 0 になります (つまり、機能しません)。

複数の他の列の一致条件に基づいて、1 つの列の値の中央値を計算するにはどうすればよいですか?

:

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

関数を避けANDIF代わりにネストされた を使用します。

具体的には:

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

問題は、AND配列のコンテキストでは意図したとおりに動作しないことです。つまり、AND各要素のペアを配列として生成するのではなく、両方の配列のすべての要素を AND 演算して、単一のスカラー結果を生成します。

元の数式では、呼び出し全体をAND単一の出力「FALSE」に評価しています (両方の配列のすべての要素が比較を満たすわけではないため)。

答え2

なぜそれが機能するのかはわかりませんが、いろいろ試してみた結果、次の方法で目的を達成できることがわかりました。

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

(ここでも、Ctrl + Shift + Enter を使用して配列として処理することを忘れないでください)

私の推測では、このAND関数はデフォルトで 1 つのTRUEorのみを生成するFALSEため、このコンテキストでは機能しません (1 と 0 の配列を生成する必要があります)。ただし、各列を独自の配列として処理すると、サブ条件ごとに 1 と 0 の文字列が生成されます。次に、複数の条件付き配列を乗算すると、結果自体が 1 と 0 の配列になり、1 は、それぞれのサブ条件の両方で目的の条件が真である場合にのみ存在します。

誰かがコメントでこれを確認/説明してくれると確信しています。

関連情報