• 締切済み

excelで受賞者を決める数式

こんにちは、よろしければご教授願います。 下記のような表があるとします。 各点数が高い順に、受賞者を決定する数式を組みたいです。 条件は下記です。 ●点数が高い人が受賞 ●受賞の順番は国語>数学>英語 ●全く同じ点数の人がいたら、Noの若い順に上から受賞者を決める ●受賞者の上限が変わる事もある 例えば、図1では、一郎さんは国語・数学・英語全てで一位の成績ですが 既に国語を受賞しているので、数学と英語は次点の人が受賞する事になります。 また、図1の次郎さんは数学と英語で一郎さんの次点ですが、 数学賞を受賞しているので、英語は次点の人が受賞する事になります。 図2では一郎さん、三郎さん、四朗さんが1位で、3人同じ点数ですが 受賞者上限が各1人ずつのため、Noの若い順に受賞します。 図3は、国語賞の受賞者上限が3人になったため、 一郎さん、三郎さん、四朗さんが3人とも国語賞を受賞し、 数学・英語は次点の人が受賞することになります。 データの関係上、一番左のNoでのソートで固定されており、ソートはし直せません。 どのような数式を組めばいいか分からないので、よろしければご教授願います。 バージョンはWindows7、Excel2010です。

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! たびたびごめんなさい。 前回の数式に不備がありました。 訂正させてください。 セル配置は前回と同じだとします。(データは10人という数式です。) 作業列H2セルは =COUNTIF(C$2:C$11,">"&C2)+COUNTIF(C$2:C2,C2) I2セルは =IF(H2<=$L$3,1000,COUNTIF($D$2:$D$11,">"&D2)+COUNTIF($D$2:D2,D2)) J2セルは =IF(OR(I2=1000,I2<SMALL($I$2:$I$11,$M$3+1)),1000,COUNTIF($E$2:$E$11,">"&E2)+COUNTIF($E$2:E2,E2)) としてオートフィルでデータ最終行までコピー! 結果のF2セルに =IF(H2<=$L$3,$C$1&"賞",IF(RANK(I2,$I$2:$I$11,1)<=$M$3,$D$1&"賞",IF(RANK(J2,$J$2:$J$11,1)<=$N$3,$E$1&"賞",""))) としてオートフィルで下へコピーしてみてください。 これで何とか希望に近い形にならないでしょうか? 何度も失礼しました。m(_ _)m

sweetybell
質問者

お礼

二度も書き込んで頂きありがとうございました! 表は無事に作成することが出来ました

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 外しているかもしれませんが・・・ ↓の画像のように作業用の列を3列・上限人数を入力する表を別途作成します。 作業列H2セルに =COUNTIF(C$2:C$11,">"&C2)+COUNTIF(C$2:C2,C2) I2セルに =IF(H2<=$L$3,1000,COUNTIF($D$2:$D$11,">"&D2)+COUNTIF($D$2:D2,D2)-$L$3) J2セルに =IF(OR(I2=1000,I2<=$M$3),1000,COUNTIF($E$2:$E$11,">"&E2)+COUNTIF($E$2:E2,E2)-$M$3) という数式を入れH2~J2セルを範囲指定 → J2セルのフィルハンドルで下へコピー! 最後にF2セルに =IF(H2<=$L$3,$C$1&"賞",IF(I2<=$M$3,$D$1&"賞",IF(RANK(J2,$J$2:$J$11,1)<=$N$3,$E$1&"賞",""))) という数式を入れオートフィルで下へコピーすると 画像のような感じになります。 これで上限人数を変えるだけでその数だけ「賞」が表示されると思います。 ※ 余計なお世話かもしれませんが、作業列の数式 >=COUNTIF(C$2:C$11,">"&C2)+COUNTIF(C$2:C2,C2) は同ランクの場合は上位行の人がランク上位になるようにしています。 ※ 表示人数(上限人数)が複数の場合、その科目のランク順としています。 (総合得点のランク順ではありません) 参考になれば良いのですが、 最初に書いたように的外れの場合はごめんなさいね。m(_ _)m

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

G:L列を作業列として使います。 ・C1:E1に各教科の受賞者上限数を入力します(例:3,1,1) ・F3に =""&J3&K3&L3  G3に =C3-A3/10000  H3に =(D3-A3/10000)*(RANK(G3,$G$3:$G$8)>$C$1)  I3に =(E3-A3/10000)*(RANK(H3,$H$3:$H$8)>$D$1)*(H3>0)  J3に =IF(AND(C3>0,RANK(G3,G$3:G$8)<=$C$1),C$2&"賞","")  K3に =IF(AND(J3="",RANK(H3,H$3:H$8)<=$D$1),D$2&"賞","")  L3に =IF(AND(J3="",K3="",RANK(I3,I$3:I$8)<=$E$1),E$2&"賞","")  と、入れます。 ・F3:L3を下にコピー(8行目まで) G:I列は、同点の場合の順位と受賞済みを考慮した得点です。 式中の10000は同点の場合の順位を決めるための「大きな数」です。 対象者数によってはもっと大きな数にしてください。

sweetybell
質問者

お礼

ありがとうございます!無事に表を作成することが出来ました!

関連するQ&A

  • 日本人ノーベル賞受賞者(科学関係)で有名な人は?

    日本人ノーベル賞受賞者(科学関係)で有名な人は? 日本人の科学関係のノーベル賞受賞者で、誰が有名なのかを知りたいと思っています。 あなたが有名だと思う日本人ノーベル賞受賞者を、有名だと思う順に3人まで挙げていただけませんか? 科学関係ですから、文学賞と平和賞は除外します。物理学賞、化学賞、生理学・医学賞に限ります。 もちろん、イグノーベル賞受賞者などは挙げないで下さい。

  • 過去のノーベル賞受賞者

    アメリカには、ノーベル賞受賞者が沢山居ますよね。でも、受賞者の中には、移民が多いとか?! これは本当ですか?? アメリカのノーベル賞受賞者の数と、日本のノーベル賞受賞者の数がはっきりと載っているサイトや雑誌など、知っていたら教えてください。(リサーチペーパーのデータとして使います。英語のサイトでも日本語のサイトでもかまいません。) それから、アメリカのノーベル賞受賞者の中で何パーセント、または、何人が移民した人達なのか、分かるデータがあれば教えてください!!

  • 快挙達成!! 韓国人、イグノーベル賞受賞!!!

    ついに韓国人が快挙を達成した。李長林 Lee Jang Rimがイグノーベル賞、数学賞を受賞した。 韓国人が受賞したのは、2000年に経済学賞を受賞した、"文鮮明師"以来3人目。 李長林 Lee Jang Rim は、「1992年に世界が終わるだろうと予言。」 受賞理由は世界が終わる日を予測・断言し、数学的仮定を立てる際には気を付けた方がよいと世界に知らしめた。とのことです。 韓国国民もこの世界的偉業に盛り上がっていることだと思います。 ところで、この李長林って何してる人ですか?

  • エクセルのレーダー図

    エクセル2000でレーダー図を作っています。 たとえばAさんの国語、数学、英語、物理、化学を 点数でレーダー化して、 Aさんの系列の中をブルーで塗りつぶしたいのですが 軸の色しかいじれませんでした。 塗りつぶす方法があれば教えてほしいのですが。

  • ノーベル賞を辞退した人っているのですか?

     過去にノーベル賞を受賞したのに辞退した人っているのですか?  もし辞退した人がいると別(次点)の人が受賞するようになるのでしょうか?  

  • ノーベル賞受賞者

    今年のノーベル物理学賞に、ロジャー・ペンローズ博士が決まりました。 物理のこともしているけれども数学者、という気がしますが、アインシュタインの相対性理論と比べたらどれくらいすごいことなのでしょうか? レントゲンとかアインシュタインとか、昔の人はなるほど、と思う理由で受賞されていますが、最近はどれくらいすごいことなのか分からない理由で決まっている気がしませんか? 科学の発展とともに仕方がないことだと思いますか?

  • Excelでの縦棒グラフの作り方

    作りたいのは、たとえば 「国語(60)、数学(70)、英語(80)、社会(90)、理科(50)と5教科の合計(350)」という項目があります。 合計の縦棒グラフの中を国語は60、数学70という風に5教科それぞれの点数で区切ったグラフを作りたいのですが、方法が分かりません。よろしければ、どなたか教えてください。

  • エクセル2007の表で自動的に点数の大きい順に並び替える表を作りたいの

    エクセル2007の表で自動的に点数の大きい順に並び替える表を作りたいのです。 初期の状態 No. 教科 第一位 第二位 第三位 001 英語 90点 70点 空白 002 数学 80点 70点 60点 003 国語 90点 80点 50点 英語で80点を取ったとして空白の所に80と入力して、自動的に大きい順に並び変えるにはどうしたらいいでしょうか? データ→並び替えは試してみましたが、上手くいきません お願いします。

  • <未解決>Excel(エクセル)でテストの結果をマクロで個人票にしたいんですが…

    エクセルのマクロを使って、下記のように個人票を作りたいです。いろいろ参考になりそうな同類の質問もあるのですが、私は初心者で、自分のして欲しいものと微妙に違うので書き換えられないので質問しました。詳細を書きます。分かりやすいように学校のテスト風に書きます。 <元の物> │1学期中間テスト│ │氏名│国語│英語│数学│日史│・・・│合計│平均│国順│英順│数順│日順│・・・│総合│ │人A│70│80│90│85│・・・│800 │88.9│3  │5  │ 2 │ 3│・・・│1 │ │人B│60│70│80│75│・・・│790 │87.9│5 │7  │ 4 │ 4│・・・│2 │ │・ │・ │・ │平均│55│60│70│64│・・・│515│578.2│ <マクロ使用後> │1学期中間テスト│空白セル×2│人A│ │  │国語│英語│数学│日史│・・・│合計│平均│ │点数│70│80│90│85│・・・│800 │88.9│ │順位│3  │5  │ 2 │ 3│・・・│1 │ │平均│55│60│70│64│・・・│515 │57.2│ │ │1学期中間テスト│空白セル×2│人B│ │  │国語│英語│数学│日史│・・・│合計│平均│ │点数│60│70│80│75│・・・│790 │87.9│ │順位│5 │7  │ 4 │ 4│・・・│2 │ │平均│55│60│70│64│・・・│515│578.2│ ━以上━ (1)テスト名、科目名、人名等は毎回変わるのでそれに対応できるように。 (2)また、科目数、人数も変わるのでそれにも対応できるように。 (3)最初に、│テスト名│を入れ、2つ空白セルを作り、│名前│を入れる。 (4)次の行にセルを1つあけて、順に科目名、合計、平均 (5)次に「点数」といれて、その後に各人の点数 (6)次に「順位」といれて、その後に各人の順位 (7)最後に「平均」といれて、科目ごとの全体の平均 (8)人と人の間に空白の行1行 それぞれの合計、平均、科目ごとと総合の順位と科目ごとの平均はすでに算出されているものとしてつくっていただければ結構ですが、もしできれば、それも作ってくれるマクロだとなおさら嬉しいです。ちなみに│ │と「 」の違いは、前のセルを引用してくるか、その文字を新しく挿入するかの違いです。技術的に可能か不可能かも私にはわからないので、もし不可能ならばそのように教えてください。 お忙しいとは思いますが、よろしくお願いします。

  • PHPによる並べ替え(ソーティング)のプログラム方法

    例えば次のような表があったとします。 ------------------- |名前|国語|数学|英語| ------------------- | B | 75 | 82 | 69 | ------------------- | C | 87 | 80 | 71 | ------------------- | A | 85 | 73 | 92 | ------------------- これを例えば国語の点数の高い順で並べ替えるとこうなりますよね。 ------------------- |名前|国語|数学|理科| ------------------- | C | 87 | 80 | 71 | ------------------- | A | 85 | 73 | 92 | ------------------- | B | 75 | 82 | 69 | ------------------- さてここで質問なのですが、上のような数字や名前のアルファベット順でのソーティングを実現するプログラムは、どのように作成すればよいのでしょうか。 済みませんがどなたかお教え下さい。勿論教えるときに例として上の表を用いてもかまいません。

    • 締切済み
    • PHP

専門家に質問してみよう