NO.50239
Re[4]: 条件に基づいた平均値の計算方法 |
---|
■投稿者/ ぷりたま
■投稿日/ 2005/07/15(Fri) 21:57:37
□URL/ |
こんばんは、ぷりたまです。
助言します。 >SUMPRODUCT は、「指定した配列の対応する要素間の積を計算し、さらにその和を返す」 >とあります。(A1:A5="●")*(B1:B5<>"") が指定した配列になるのでしょうか?
SUMPRODUCTのヘルプを見ると確かにご質問の内容が書かれています。 しかし厳格にSUMPRODUCT(配列1,配列2,配列3)となっていなくても、要素間の積を 計算してしまうのがSUMPRODUCT関数の良いところなのです。 SUMPRODUCT(配列1) と配列が一つしか無くてもOKなのです。
例題の場合、式の (A1:A5="●") の部分を範囲指定して F9 を押して 下さい。 {TRUE,TRUE,FALSE,TRUE,TRUE} と表示されるはずです。 EXCELの決まり事として TRUE=1 FALSE=0 ですのでこの場合 {1,1,0,1,1} となります。
こんどは、(B1:B5<>"") の部分を範囲指定して F9 を押して下さい。 {TRUE,TRUE,TRUE,FALSE,TRUE} と表示されるはずです。 つまり、{1,1,1,0,1} となります。
この二つを、それぞれの位置で掛け合わすと {1,1,0,0,1} となります。 (A1:A5="●")*(B1:B5<>"") の部分を範囲指定して F9 を押すと {TRUE,TRUE,FALSE,FALSE,TRUE} となっていることで分かると思います。
それを SUM 足し算するので 1+1+0+0+1 で 3となります。
次に、=AVERAGE(IF(($A$1:$A$5="●")*($B$1:$B$5<>"),$B$1:$B$5)) ですが、仰るとおり基本は IF(論理式, 真の場合, 偽の場合) です しかし配列計算に限り、許されるのが EXCEL の特徴です。 先ほどと同様に配列数式計算では、$A$1:$A$5="●")*($B$1:$B$5<>"") の部分は {TRUE,TRUE,FALSE,FALSE,TRUE} です。 if文で分岐していますので,TRUEなら $B$1:$B$5 に相当する位置の データを取ります。 FALSE なら 指定が無いのでそのままFALSEを 返します。 つまり IF(($A$1:$A$5="●")*($B$1:$B$5<>"),$B$1:$B$5) の部分を指定して F9 を押すと、{4,6,FALSE,FALSE,2} と表示され ます。 これを AVERAGE関数で平均を求めているのですから、
4+6+0+0+2 は 12 であり FALSE は個数に数えませんから、対象 個数は 3 です よって答えは 4となるわけです。
>最後に、配列として入力するのはどうしてですか?
一つ一つのデータに対して一つ一つ評価する式を作るのでは大変です。 EXCEL は 配列の場合キチンとデータの順位(順番)通りに評価する 仕様となっていますので、それを利用しているだけです。
配列数式は一般の本にはあまり詳しく書いてありません。 net検索で「配列数式」で検索をかければ、ゾロゾロ参考になるものが 見つかるはずです。
|
記事NO.50072 のレス /
削除チェック/
|