dポイントプレゼントキャンペーン実施中!

RANK関数で求めた結果が同じだった場合、別のフィールドを見に行って順位を同じにしない方法はわかりました。
RANK関数とSUMPRODUCT組み合わせすればいいんですね。

今回は条件が2つあります。
ゴルフの順位を求めたい。
まず結果にて順位を求めました。同じ順位だった場合「IN」の数字を見に行きます。そこでも同じだった場合(「OUT」が違えばありえますよね?)
次に見に行くのが年齢を見に行くそうです。

RANKにSUMPRODCTを2つ組み合わせてみたのですがうまくいきませんでした。

よろしくお願いします

A 回答 (6件)

私はゴルフをしないので、スコア等間違っているかもしれませんが、


  A    B   C  D   E    F  ←列
1  氏名  in  out  計  年齢  順位
2  a    15  13  28   18   4
3  b    15  13  28   25   3
4  c    13  15  28   32   2
5  d    16  12  28   27   5
6  e    13  13  26   20   1


(1)スコアが少ない人が上位
(2)同スコアの場合INのスコアが少ない人が上位
(3)さらに同スコアの場合年齢が多い人が上位
の様な感じでよいのでしょうか?

RANK関数は使っていませんが、

=SUMPRODUCT(($D$2:$D$6<D2)+(($D$2:$D$6=D2)*(($B$2:$B$6<B2)+($B$2:$B$6=B2)*($E$2:$E$6>E2))))+1

でどうでしょう?

(1)自分より「計」が少ない人
(2)「計」が同じでInがすくない人
(3)「計」・「In」が同じで年齢が多い人
が何人いるか計算し、その次の順位(+1)にします。

間違っていたらすみません。

この回答への補足

早々のお返事ありがとうございました。
自分のデータに置き換えてやってみたのですが、
「1位」がなくなって「2位」の人が2人できてしまいました。
(元々1位が2名いました)

何が原因かおわかりになりますでしょうか?

補足日時:2003/09/11 14:01
    • good
    • 0

こんばんは



ご質問の記載範囲では、条件不足と思うのですが

通常ゴルフの順位は(プロでもない限り)
1)ネットスコアー(グロス - ハンディキャップ)が低い方が上位


これに対して、そちらのローカルルールの

第2条件の IN と OUT のスコアーですが
これはグロスのことでしょうか?
それとも、IN - ハンディキャップ/2 として
ハーフのネットに対してでしょうか?

次に年齢は高い方が上位でしょうか?
    • good
    • 0

質問に正面から答えていないこと、過去に質問があったらしいが見ていないことで申し訳ないですが、難しい方法に


固執しているように思います。
こう言う場合、ソートキーを
第1キー トータルスコア 昇順
第2キー INスコア   昇順
第3キー 年齢      降順
としてソートして、処理してきました。「来ました」とはエクセルを使わない(使えない当初の)時代や、世界(ビジネスシステム業務など、またパソコン以外でマイクロソフト以外のOSでのシステム)でのことです。
エクセルは便利で優れたソフトですが、エクセルからコンピュタ利用を始めると、エクセルに拘りすぎが出てくる場合が見られます。昔のコンピュタ処理(オフラインバッチ処理)はソートを常(多)用しました。
Rank関数も内部ではソートをしていることと察します。
そういう経験から、ソートを使うというのはどうでしょうかという感想を持ちました。
    • good
    • 0

#2のfeverです、どうも(^^ゞ



G2=D2*10000+B2*100-E2
G3=D3*10000+B3*100-E3
 ・
 ・
 ・
のように、Dに掛ける数字を1000から10000にして頂いてもよろしいでしょうか。
これでなら、結果が上手くと思うのですが(^^ゞ
駄目でしょうか?

順位の決定方法を
第一条件:TOTAL(D列)の少ない方が上位
第二条件:TOTALが同じならばIN(B列)の少ない方が上位
第三条件:更に同じならば年齢が多い方が上位
と解釈したのですが、宜しかったでしょうか?

第一条件>第二条件>第三条件としたいので
D列には10000を、B列には100を掛けます。
RANK関数で少ない順に順位を付けるので、年齢は多い方が上位となるよう、単純に引きました。
    • good
    • 2

どんなデータが入っているのか分かりませんので、推測での回答ですが、


空白の行も参照していますか?
例えば、#1の表で、
=SUMPRODUCT(($D$2:$D$7<D2)+(($D$2:$D$7=D2)*(($B$2:$B$7<B2)+($B$2:$B$7=B2)*($E$2:$E$7>E2))))+1
となっていると、空白の行が1位になってしまいます。
(7行目が空白行)

=IF(D2="","",SUMPRODUCT(($D$2:$D$7<>"")*($D$2:$D$7<D2)+(($D$2:$D$7=D2)*(($B$2:$B$7<B2)+($B$2:$B$7=B2)*($E$2:$E$7>E2))))+1)

とすれば、できると思います。

そういう事ではないですか?
    • good
    • 0

A1="氏名"


B1="IN"
C1="OUT"
D1="TOTAL"
E1="年齢"
F1="順位"
だとします。

G2=D2*1000+B2*100-E2
G3=D3*1000+B3*100-E3
 ・
 ・
 ・

F2=RANK(G2,$G$2:$G$≪必要な行を指定≫,1)
F3=RANK(G3,$G$2:$G$≪必要な行を指定≫,1)
 ・
 ・
 ・

これでどうでしょうか?
ただし、TOTAL・IN・年齢が全て同じだと同率になってしまいます。

この回答への補足

ありがとうございます。

上記の計算を行ってみたところ、あきらかに順位が違うものが出てきてしまいました。なぜこのような計算をするのかなど、もしよろしければ教えていただけますか?
よろしくお願いいたします。

補足日時:2003/09/11 14:45
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!