[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『SUMPRODUCT関数で最大値を求める』(ぎょたく)
また教えてください。
チェックボックス(フォームから)にチェックがついた隣のセルに点数の
最大値を求めようとしており、ネット検索で以下の方法を見つけました。
A B C
1 2 □ =SUMPRODUCT(MAX((B1:B3=TRUE)*(A1:A3)))
2 2 □
3 0 □
この式で質問なのですが、なぜSUMPRODUCT関数が必要なのでしょうか?
単純に=MAX((B1:B3=TRUE)*(A1:A3)) でも良い気がするのですが・・・。
確かに上記式(=MAX〜)では、B2のみにチェックを入れた場合だと、
0となり、求めたい2が得られません。でもこの場合も、C1セルでF9を押すと
2という正しい答えになっています。これもなぜなのでしょうか?
とんちんかんな質問だったらすみません。
よろしくお願いします。
>確かに上記式(=MAX〜)では、B2のみにチェックを入れた場合だと、 >0となり、求めたい2が得られません。
MAXを使った関数の方は配列数式なので Ctrl + Shift + Enter で確定する必要があります。 確定させたあと式が{=MAX((B1:B3=TRUE)*(A1:A3))}のように{}でくくられます。 ちなみにSUMPRODUCT関数を使えばわざわざ Ctrl + Shift + Enter で確定させる必要があり ません。なのでSUMPRODUCT関数を使っているのではないでしょうか。
(se_9)
(se_9)さん、ありがとうございます。 配列数式にしてなかったのが原因だったんですね。
もう一つの質問の方ですが、 このように式が正しくない場合、計算値とF9で調べた値が 異なることはあり得るのでしょうか? F9は式の検算用と思っており、今までこのような現象に 遭遇しなかったもので、良かったら教えて下さい。
(ぎょたく)
> でもこの場合も、C1セルでF9を押すと2という正しい答えになっています。
これは数式を値に変換する操作ですか? つまりC1を選択してF2キーで編集状態にしてからF9キーを押す またはC1を選択して数式バー上でF9キーを押すということ?
要は確定前の状態に戻すわけですからCtrl+Shift+Enterで確定していても いなくても同じ状態になりますよね? その状態でF9キーを押せば配列数式なら配列数式としての結果が表示されるんじゃないでしょうか?
ちなみに > =SUMPRODUCT(MAX((B1:B3=TRUE)*(A1:A3))) > =MAX((B1:B3=TRUE)*(A1:A3))
=SUMPRODUCT(MAX(A1:A3*B1:B3)) =MAX(A1:A3*B1:B3)
でも同じだと思います。 どっちにしても負数が最大値になる場合はうまくいきませんけど。
(JPN)
(JPN)さん、ありがとうございます。
>これは数式を値に変換する操作ですか? >つまりC1を選択してF2キーで編集状態にしてからF9キーを押す >またはC1を選択して数式バー上でF9キーを押すということ?
そうです、これです。 配列数式の場合は確定前の状態になるんですね…。勉強になりました。 ありがとうございます。
新しい式もありがとうございます。 でも、負数が最大値の場合はうまくいきませんか? 今外なんで現象確認できていませんが、そういう状況もありえます。 負数を考慮した場合、どのような式にしたら良いか教えてもらえますか?
(ぎょたく)
> 負数を考慮した場合
=MAX(IF(B1:B3,A1:A3))
Ctrl+Shift+Enterで確定 チェックボックスにチェックが入っているかどうかを確認する場合
=IF(COUNTIF(B1:B3,TRUE),MAX(IF(B1:B3,A1:A3)),"")
Ctrl+Shift+Enterで確定
(JPN)
まだ確認できる状況にありませんので、後でまた報告します。
(ぎょたく)
おはようございます。 (se_9)さん、(JPN)さん、改めてありがとうございます。 提示頂いた式を実際に使ってみて、完璧に動作することが確認できました。
掛け算を使うと、FALSEの場合"0"となり、負数より大きくなることを 失念していました。 今回の場合、数値を参照するだけなので、SUMPRODUCT使う必要性が なかったですねorz
本当にありがとうございました。
(ぎょたく)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.