次のようなグラフの条件付き中央値を計算しようとしています。
A | B
-------
x | 1
x | 1
x | 3
x |
y | 4
z | 5
MS Excel 2007を使用しています。AVERAGEIF()ステートメントを認識していますが、Medianに相当するものはありません。主なトリックは、上記の4番目の「a」のようにデータのない行があることです。この場合、計算でこの行をまったく考慮しないようにします。
グーグルは次のことを提案していますが、Excelは数式形式を受け入れません(おそらく2007年だからですか?)
=MEDIAN(IF((A:A="x")*(A:A<>"")), B:B)
Excelは、数式に問題があるというエラーを表示します(条件の*に関係します)。次のことも試しましたが、計算では空白のセルが0としてカウントされます。
=MEDIAN(IF(A:A = "x", B:B, "")
これらの数式はExcelの「配列」を返すことを認識しています。つまり、正しく機能させるには「Ctrl-shift-enter」を入力する必要があります。
空白のセルを考慮せずに条件付き評価を行うにはどうすればよいですか?
ネストされたifステートメント。
=MEDIAN(IF(A:A = "x",IF(B:B<>"",B:B, ""),"")
説明することはあまりありません-Aがxであるかどうかをチェックします。そうである場合は、Bが空白でないかどうかを確認します。両方の条件に一致するものはすべて、中央値の一部として計算されます。
次のデータセットがあるとします。
A | B
------
x |
x |
x | 2
x | 3
x | 4
x | 5
上記の式は3.5を返します。これは、あなたが望んでいたと私が信じているものです。
Googleの数式を使用しますが、ヒットする代わりに Enter 数式バーに入力したら、 Ctrl+Shift+Enter 同時に(代わりに Enter)。これにより、数式が角かっこで囲まれ、配列として扱われます。
注意してください、あなたがそれを編集するならば、あなたは打つことができません Enter 再度、または式は無効になります。編集する場合は、完了時に同じことを行う必要があります(Ctrl+Shift+Enter)。
CtrlShiftEnter操作を必要とする配列数式を含まない別の方法があります。 Excel 2010、2011以降で提供されるAggregate()関数を使用します。この方法は、最小、最大、およびさまざまなパーセンタイルでも機能します。 Aggregate()を使用するとエラーを無視できるため、必要のないすべての値でエラーが発生するようにするのがコツです。最も簡単な方法は、上記のタスクセットを実行することです。
= Aggregate(16,6、(B:B)/((A:A = "x")*(B:B <> ""))、0.5)
最初と最後のパラメーターは、中央値であるパーセンタイル50%を実行するようにシーンを設定し、2番目はすべてのエラー(DIV#0を含む)を無視することを示し、3番目はB列データを選択してそれを次の数値で除算することを示しますA列にxが含まれるすべての空でない値に対して1つ、それ以外の場合は0。ゼロはゼロ除算例外を作成し、a/1 = aおよびa/0 = Div#0であるため、無視されます。
この手法は、四分位数(適切なp値を持つ)、もちろん他のすべてのパーセンタイル、および適切な引数を持つ大関数または小関数を使用した最大値と最小値に対して機能します。
これは、非常に人気のあるSumproduct()トリックに似た構造ですが、これらの関数の数値のように見えるゼロを生成するため、分位数または最大最小値には使用できません。
ボブ・ジョーダン
おそらくこれの代わりにもう少し一般化するために...
{=MEDIAN(IF(A:A="x",IF(B:B<>"",B:B)))}
...次を使用できます。
{=QUARTILE.EXC(IF(A:A="x",IF(B:B<>"",B:B)),2)}
中括弧は配列数式を参照していることに注意してください。数式に角かっこを配置するのではなく、数式を入力するときにCTRL + SHIFT + ENTER(またはmacOSではCMD + SHIFT + ENTER)を押してください
次に、最後の数値をそれぞれ2から1またはに変更することで、最初と3番目の四分位数を簡単に取得できます。ちなみに、QUARTILE.EXCは、ほとんどの商用統計ソフトウェア(Minitabなど)で使用されているものです。 「通常の」関数はQUARTILE.INCであり、古いバージョンのExcelの場合はQUARTILEだけです。