Excel関数で順位を求める方法

このQ&Aのポイント
  • Excel2000での順位の求め方に関して質問があります。関数を使用して科目1の順位、性別が1の場合の科目1の順位、性別が1かつ科目2が10以上の場合の科目1の順位を求める方法を教えてください。
  • Excel関数を使用して、特定の条件に基づいて順位を求める方法について質問があります。具体的には、科目1の順位を求める方法、性別が1の場合の科目1の順位を求める方法、性別が1かつ科目2が10以上の場合の科目1の順位を求める方法を教えてください。
  • Excel2000での順位を求める方法について質問があります。関数を使用して、科目1の順位、性別が1の場合の科目1の順位、性別が1かつ科目2が10以上の場合の科目1の順位を求める方法を教えていただけますか?
回答を見る
  • ベストアンサー

Excel関数で順位

Excel2000を使用しております。 関数を使用して下記内容の結果を求めるにはどうすればよいの ですか? 結果1 → 科目1の順位(関数 RANKを使用してできました) 結果2 → 性別が1での科目1の順位  結果3 → 性別が1、科目2が10以上での科目1の順位 得点が同じ場合は同順位となる。 連番、性別、科目1、科目2、結果1、結果2、結果3 1   1   56   10    1    1    1 2   1   37   9     3    3 3   2   -    10 4   2   37    7    3 5   1   50   10     2    2    2 あくまでも関数で処理したいのですが?

  • rei230
  • お礼率92% (153/166)

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 【方法その1】関数と作業列を使う方法  今仮に、「連番」と入力されているセルが、Sheet1のA1セルであるものとします。  まず、適当な使用していないシート(ここでは仮にSheet2とします)のA2セルに、次の数式を入力して下さい。 =IF(AND(ISNUMBER(INDEX(Sheet1!$C:$C,ROW())),INDEX(Sheet1!$B:$B,ROW())=1),INDEX(Sheet1!$C:$C,ROW()),"")  次に、Sheet2のB2セルに、次の数式を入力して下さい。 =IF(AND(ISNUMBER(INDEX(Sheet1!$C:$C,ROW())),INDEX(Sheet1!$B:$B,ROW())=1,ISNUMBER(INDEX(Sheet1!$D:$D,ROW())),INDEX(Sheet1!$D:$D,ROW())>=10),INDEX(Sheet1!$C:$C,ROW()),"")  次に、Sheet2のA2~B2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。  次に、Sheet1のF2セルに、次の数式を入力して下さい。 =IF(ISNUMBER(INDEX(Sheet2!$A:$A,ROW())),RANK(INDEX(Sheet2!$A:$A,ROW()),Sheet2!$A:$A),"")  次に、Sheet1のG2セルに、次の数式を入力して下さい。 =IF(ISNUMBER(INDEX(Sheet2!$B:$B,ROW())),RANK(INDEX(Sheet2!$B:$B,ROW()),Sheet2!$B:$B),"")  次に、Sheet2のF2~G2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。  以上です。  【方法その2】作業列を使用せず、関数のみで処理を行う方法(但し、表の行数が、数千行以上もある場合には、計算処理に要する負荷が大きくなります)  今仮に、「連番」と入力されているセルがA1セルであるものとします。  まず、F2セルに、次の数式を入力して下さい。 =IF(AND(ISNUMBER(INDEX($C:$C,ROW())),INDEX($B:$B,ROW())=1),SUMPRODUCT(ISNUMBER($C$1:INDEX($C:$C,MATCH(MAX($C:$C)+1,$C:$C)))*($B$1:INDEX($B:$B,MATCH(MAX($C:$C)+1,$C:$C))=1)*($C$1:INDEX($C:$C,MATCH(MAX($C:$C)+1,$C:$C))>=INDEX($C:$C,ROW()))),"")  次に、G2セルに、次の数式を入力して下さい。 =IF(AND(ISNUMBER(INDEX($C:$C,ROW())),INDEX($B:$B,ROW())=1,ISNUMBER(INDEX($D:$D,ROW())),INDEX($D:$D,ROW())>=10),SUMPRODUCT(ISNUMBER($C$1:INDEX($C:$C,MATCH(MAX($C:$C)+1,$C:$C)))*($B$1:INDEX($B:$B,MATCH(MAX($C:$C)+1,$C:$C))=1)*ISNUMBER($D$1:INDEX($D:$D,MATCH(MAX($C:$C)+1,$C:$C)))*($D$1:INDEX($D:$D,MATCH(MAX($C:$C)+1,$C:$C))>=10)*($C$1:INDEX($C:$C,MATCH(MAX($C:$C)+1,$C:$C))>=INDEX($C:$C,ROW()))),"")  次に、F2~G2の範囲をコピーして、同じ列の3行目以下に貼り付けて下さい。  以上です。

rei230
質問者

お礼

早々にありがとうございます。 思いの通りの結果ができました。 失礼ながら「すばらしい」と言わせて下さい。

その他の回答 (2)

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.3

No.1です。 作業列を使いたくないのであれば F2に =IF(B2=1,SUMPRODUCT(($B$2:$B$6=1)*($C$2:$C$6>C2))+1,"") G2に =IF(AND(B2=1,D2>=10),SUMPRODUCT(($B$2:$B$6=1)*($D$2:$D$6>=10)*($C$2:$C$6>C2))+1,"") と入力して下方向に複写で可能かと思います。 No.2さんの【方法その2】だと、同点で1位が2人いた場合、2人とも2位になります。

rei230
質問者

お礼

ありがとうございます。ご指摘の通りです。 これから色々なデータで確認いたします。 このアドバイスはとても参考になりました。

  • don9don9
  • ベストアンサー率47% (299/624)
回答No.1

空いている列を作業列として使うのが簡単だと思います。 例えばH列に =IF(B2=1,C2,"") I列に =IF(AND(B2=1,D2>=10),C2,"") という式を入れると、H列は結果2、I列は結果3の条件に合致する行だけ 同じ行のC列の値(=科目1の点数)が入るはずです。 このH列、I列の値に対してRANK関数を使えばいいです。 ちなみにH列やI列に""が入っている行はRANK関数を普通に使うと#VALUE!エラーを返します。 =IF(H2<>"",RANK(H2,H:H),"") このような形でエラー回避をしてください。 作業列が見栄え的に邪魔であれば、列自体を非表示にすればいいです。

rei230
質問者

お礼

ありがとうございます。 やはり、分解するしかないのですか・・・・・ でも、確実ですね。

関連するQ&A

  • (Excel)RANK関数で同じ値なのに違う順位になる

    Excel2000を使用しています。 下記の表を作成して、  F列には、=SUM(A1:E1)-MIN(A1:E1)-MAX(A1:E1)  G列には、=RANK(F1,$F$1:$F$4) を入力していますが、 F2とF3は同じ値になるのに順位が違って出てきます。 確か、RANK関数は同値の場合同じ順位が出てくると思うのですが、 そうならないので困っています。 ちなみに、F列に数式ではなく計算結果を直接入力した場合には 同じ順位が出てきました。 どうしてそのようなことになってしまうのでしょうか? ご存知の方がいましたら教えてください。 (A) (B) (C) (D) (E) (F) (G)  9.50  9.20  9.35  9.60  9.45 28.3000  1  9.40  9.30  9.35  9.55  9.45 28.2000  2  9.20  9.45  9.40  9.35  9.55 28.2000  3  9.45  9.30  9.30  9.40  9.50 28.1500  4 宜しくお願いします。

  • Excelの同じ値の順位

    RANK関数は同じ値は同順位になりますよね。 たとえば「10,10,9」という値の順位なら、「1,1,3位」となります。 これを「1,2,3位」としたいのです。2つの「10」については、どちらが1位でどちらが2位になってもかまいません。 RANK関数にはこだわりませんので他の処理なども考えられればお教えください。

  • Excel関数について

    Excel関数について質問させて下さい。 得点者リスト一覧で 1位から順番に順位を付ける為の関数をお教え下さい。 例:セル1-氏名。 セル2-得点。 セル3-順位を表示したいセル セル1 セル2  セル3 A   100点 B    90点 C   87点 D   111点 上記のようなリストで1位から順位を“セル3”の列に付けたいんです。 以上宜しくお願い致します。

  • EXCEL関数について

    EXCEL関数について、 教えていただきたい事があります。 (1)列に10個の数字があり、その10個の数字で順位を決めるときに、   何人かが、同順位になってしまいました。その同順位の人だけで   次の列の数字で、次の順位を決めたいのですが。   よろしくお願いいたします。   

  • RANK関数 順位が同じだった場合の条件が2つあります

    RANK関数で求めた結果が同じだった場合、別のフィールドを見に行って順位を同じにしない方法はわかりました。 RANK関数とSUMPRODUCT組み合わせすればいいんですね。 今回は条件が2つあります。 ゴルフの順位を求めたい。 まず結果にて順位を求めました。同じ順位だった場合「IN」の数字を見に行きます。そこでも同じだった場合(「OUT」が違えばありえますよね?) 次に見に行くのが年齢を見に行くそうです。 RANKにSUMPRODCTを2つ組み合わせてみたのですがうまくいきませんでした。 よろしくお願いします

  • エクセル 同順位の処理

    いつもお世話になっております。  上位3名の合計点を求める時に、同順位(例:1位1名・2位1名・3位2名)が出た場合、3位者(同順位者)については1名のみの点数を計算したいのですがその方法がわかりません。よろしくお願いします。  また、2位が2名の時は、1位と2位の3名の合計点の計算となります。  順位はRANK関数を使用しています。 得点 順位 上位合計点 98  1 80  3 76        ? 82  2 80  3 よろしくお願いします。

  • 複数条件での順位表示

    サッカーのリーグ戦でチームの順位を計算する際、 例えば、勝ち点→得失点差→総得点数という優先順 位でランクを表示したいです。が、エクセルの関数 式を教えていただけませんか。 上位優先条件で同 ランクが発生したときの式がわかりません。 以下のような順位をつけたいです。 チーム 勝ち点 得失差 総得点 順位   A   6  +5   8   1  B   6  +3   5   2  C   1  -4   2   3  D   1  -4   0   4 よろしくお願いします。

  • エクセルでサッカーの順意表を作り勝敗数でRANK関数を使用し順位が出る

    エクセルでサッカーの順意表を作り勝敗数でRANK関数を使用し順位が出るようにしたのですが、同順位の場合得失点の条件も含めて順位をつけるようにしたいのですがどうしたらよいですか?

  • EXCEL関数

    Win7にEXCEL(Office2000)の関数が急に関数の結果がおかしくなった、最初に関数を手動で数式を書き込み(正常な結果)そのセル右下角の"+"マークを下にドラッグしたらセル番号がインクリメントされてのコピーですが結果は全て手動で書き込んだ式のでの結果(内容は全て同一)です。 Office2000をプログラムと機能で削除しましたが(Office2000の表示は消えた)実際には消えてなくEXCELは起動し関数は直ってない、Office2000インストールディスクから同アプリを削除(Officeのホルダー内容が削除されたのを確認した)し 再度インストールしたがプログラムと機能には登録されていないがExcelは正常に起動できるがこの関数トラブルは変わらず、気になるのはExcelウインドの左上の"ファイル"をクリックすると以前開いた経歴が出てきたので新規インストールしても以前の経歴が他所に保持されてる様なので、悪さをしている関数の情報も残っているのでその情報を削除すれば正常になるのではと考えてます。 何方かこのトラブルの解消方法を教えてください。以上

  • RANK.AVG関数でも同順位が整数で表示・・

    エクセル2010を使っている者です。 RANK関数がRANK.AVGとRANK.EQに分かれ、前者の場合は同順位だった場合、小数点で表示されるとのことですが、使ってみたところRANK関数と同じように同順位が同じ値の整数で表示されてしまいます。 以下のサイトに書いてあるとおり、小数点で表示させるにはどうすればよいでしょうか? http://blog.goo.ne.jp/fkeebie2010/e/5e9016b3146ae18225146f079bc6baec

専門家に質問してみよう