Excel(Google スプレッドシート)でランク付け

A B C D
1 名前 年齢 点数
2 John 23 87
3 Paul 22 87
4 George 24 78
5 Ringo 22 90

こんな表があって、以下の条件で順位付したい場合

  1. 点数が低い
  2. 点数が同じである場合、年齢が低い

RANK関数だと条件は一つしか付けられないので点数が同じだった場合の年齢順が考慮できない。

そんなときはSUMPRODUCT関数を使うと便利。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/sumproduct.htm

正直良くわからないけどこれで良いらしい。

=SUMPRODUCT(($C$2:$C$5<$C2) + (($C$2:$C$5=$C2) * ($D$2:$D$5<$D2)) + 1

($C$2:$C$5<$C2)は自分より点数が低いもの。
($C$2:$C$5=$C2) * ($D$2:$D$5<$D2)は自分と点数が一緒"かつ"年齢が低いもの。(*はAND条件)
それを「+」でOR条件としてくっつける。

これをD列に埋めてオートフィルしてやればD列に順位がでる。

Googleスプレッドシートで使う場合は一点注意。
おまじないが必要だそう。
http://d.hatena.ne.jp/emmie714/20090904/1252026152

=ARRAYFOMURA(SUMPRODUCT(($C$2:$C$5<$C2) + (($C$2:$C$5=$C2) * ($D$2:$D$5<$D2))) + 1

確かにこれでうまく行った。