
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
関数を避けAND
、IF
代わりにネストされた を使用します。
具体的には:
=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 つのTRUE
orのみを生成するFALSE
ため、このコンテキストでは機能しません (1 と 0 の配列を生成する必要があります)。ただし、各列を独自の配列として処理すると、サブ条件ごとに 1 と 0 の文字列が生成されます。次に、複数の条件付き配列を乗算すると、結果自体が 1 と 0 の配列になり、1 は、それぞれのサブ条件の両方で目的の条件が真である場合にのみ存在します。
誰かがコメントでこれを確認/説明してくれると確信しています。