- ベストアンサー
Excel関数:得点判定と最低得点の求め方
- Excelの関数を使用して得点の判定や最低得点の求め方を解説します。
- 具体的な例として、名前と得点が入力された表を用いて判定を行い、最低得点を表示する方法を説明します。
- IF関数やMIN関数を使うことで簡単に判定や最低得点の求め方を実現できます。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 まず補足の件について・・・ おそらく配列数式になっていないのではないかと思われます。 前回の数式をこの画面からE4セルにコピー&ペーストしてみてください。 そのままでは配列数式になりませんので、 (1) 数式バー内で一度クリック! (2) E4セルをダブルクリック! (3) F2キーを押す! 上記の三つの操作のどれでも構いませんので、一つだけやってみてください。 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 数式の説明ですが、 (1)配列数式に関しては私が説明するより↓のURLを覗いていただいた方が判りやすいと思います。 http://hp.vector.co.jp/authors/VA014071/tips/hairetsu.html 配列数式部の意味は 4~100行内で、B列値がC列に表示されているデータの中で最小値と一致する場合はC列を表示! といった感じになります。 (2)D列の数式は↓の画像で説明します。 今回は画像のように別表を作ってみました。 (実際は「未満」の列は不要です。判りやすくするために敢えて表示しています) そうすればD4セルの数式を =IF(C4="","",INDEX($I$4:$I$6,MATCH(C4,$G$4:$G$6,1))) としても同様の結果が表示されるはずです。 前回は表を作成する手間を省くため、INDEX関数の「配列」を{ }で括り、 INDEX関数範囲の「行番号」取得のMATCH関数は「検索範囲」を{ }で括っています。 そしてMATCH関数の「照合の種類」を「TRUE」型にしています。 (前回・今回の数式内の最後の「1」が「TRUE」型になります) ※ データ量が多い場合、配列数式はPCにかなりの負担を掛けて計算速度が極端に落ちることがありますので 気を付けてください。 前回は100行目までの範囲としていますが、1000行とかでも大丈夫だと思います。 余談ですが、SUMPRODUCT関数も配列数式になります。 この程度で参考になりますかね?m(_ _)m
その他の回答 (4)
- KURUMITO
- ベストアンサー率42% (1835/4283)
お示しのシートではB3セルに名前、C3セルに得点、D3セルに判定の文字がそれぞれ入力されており各データは4行目以降に入力されているとします。 D4セルには次の式を入力して下方にドラッグコピーします。 =IF(C4="","",IF(C4<50,"C",IF(C4<75,"B","A"))) 作業列を作って対応します。 E4セルには次の式を入力して下方にドラッグコピーします。 =IF(D4="","",IF(D3<>D4,MAX(E$3:E3)+1,E3)) F4セルには次の式を入力して下方にドラッグコピーします。 =IF(C4="","",IF(C4=MIN(INDEX(C:C,MATCH(E4,E:E,0)):INDEX(C:C,MATCH(E4,E:E,0)+COUNTIF(E:E,E4)-1)),C4,"")) そこでお求めの条件付き書式の設定ですが次のようにします。 ここでは例として判定がCの場合について述べます。 C列には範囲内での最低の数値に色を付けるわけですが次のようにします。 C列を選択してから「ホーム」タブから「条件付き書式」で「新しいルール」を選択します。 表示の画面で「数式を使用して…」にチェックをして数式の窓には次の式を入力します。 =AND(F1<>"",D1="C") 「書式」をクリックして「塗りつぶし」のタブから好みの色を選択してOKします。 D列についても列を選択したのちに上と同様の操作を行います。その際に数式の窓には次の式を入力します。 =D1="C" 他の判定についても条件付き書式を設定すればよいでしょう。
お礼
ありがとうございます! この質問で沢山のことを学ばせて頂きました。 条件付き書式も使いこなせると便利そうですね! 教えて頂いたことをコツコツ学ばせて頂きます。 本当にありがとうございました★
- MarcoRossiItaly
- ベストアンサー率40% (454/1128)
以前、類似のご質問にお答えしたので、参考URLのNo.4・5をご覧ください。ワークシートには列がたくさん用意されているのですから、それらを活用しないと、Excelは本領を発揮できません。 ただまあ、こうした「表示」の技をいろいろ研究するよりも、しっかりしたデータベースの構築と、それを使った分析の方法を学んでいくのが本筋だと個人的には思いますが…。最小値の算出にしても、しかり。
お礼
ありがとうございます。 参考URLの回答No.4、No.5を見させていただきました。 全く同じような内容ですね! ただ、私の表の場合、ハイフンがないため、No.4の手順では上手くいかないのですよね・・・ ハイフンではない場合の改変?方法すらわからないもので>< ただ、OFFSET関数というものが便利そうで。 データベースの構築、分析とはVBAですか? こういう私が全く分からないことをスラスラ教えて下さる皆様を見ていると、すっごく憧れてしまいます・・・ 私も勉強して少しでも皆様に近づけますように・・・ 有難うございました。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
>上の行から判定を見ていき、G4からG8は連続してC判定で、その群の最低点がどこかを示す。(連続した判定の中の、最低得点を示したいのです) これは無理でしょうか? どんなことでも大抵のことは多分できるでしょう。がぁ~、そうするべき、意味、理由はなんでしょうか? 今の説明で、私には全く理解できません。C判定の中のランクではないいんですよね?
お礼
わかりやすいと思い得点・判定という例を作り質問しました。 本当は仕事でこのような振り分けが必要となり、どうにか出来ないかなと思ったのです。 (得点・判定というという例えがわかりにくかったのだと思います。すいません。) ありがとうございました。
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! お望みの方法とは異なるかもしれませんが・・・ ↓の画像のようにやってみました。 今回(h)ランク分けが3区分しかないので表を作成せずにやっています。 画像のD4セルに =IF(C4="","",INDEX({"C","B","A"},MATCH(C4,{0,50,75},1))) E4セルに =IF(D4="","",IF(C4=MIN(IF($D$4:$D$100=D4,$C$4:$C$100)),D4,"")) ※ E4セルは配列数式になってしまいまsので Shift+Ctrl+Enter で確定! 最後にD4・E4セルを範囲指定し、E4セルのフィルハンドルで下へコピーすると 画像のような感じになります。 ※ あくまで一例で、E列の表示がお望みの方法でないかもしれません。 他によい方法があればごめんなさいね。m(_ _)m
お礼
ありがとうございました! これでスムーズに出来そうです。 とても厚かましいお願いなのですが、 ●=IF(C4="","",INDEX({"C","B","A"},MATCH(C4,{0,50,75},1))) もし、C4が空白なら空白、空白でなければ・・・この先が>< ●=IF(D4="","",IF(C4=MIN(IF($D$4:$D$100=D4,$C$4:$C$100)),D4,"")) お恥ずかしいのですが、配列数式という言葉、初めて耳にしました。 この数式の説明?をもう少しして頂けたらありがたいのですが。。。 すいません、本当に簡単なものしか分からないもので・・・ 今から私なりに調べようと思っています。 tom04さんの方法でやらせて頂きます。 とても沢山の行を扱わなければいけなかったので、とても助かりました! もしお時間がありましたら、お願いします。 ありがとうございました。
補足
度々すいません・・・ この方法ですと、全てのAの中の最低得点・全てのBの中の最低得点・全てのCの中の最低得点が表示されるのでしょうか? 今、試してみているのですが、全てが出てこないのです>< tom04さんがUPしてくださったE16セルにもCが出てくるようにはできますでしょうか? 説明が下手で申し訳ないのですが、連続の判定(AorBorC)の中の最低得点がどこかを知りたいのです。 連続で失礼しました。
お礼
何度もご丁寧にありがとうございます。 今から一生懸命、教えて頂いたものを活かせるよう勉強します。 初めての配列数式、まだザッとしか読んでないのですが、すごく便利そうですね。 やっぱり、Excelなど使いこなせると時間の効率が違うんだろうな~とか・・・憧れの眼差しです! ありがとうございました。 また何かありましたら宜しくお願い致します。