• ベストアンサー

RANK関数についてお尋ねです

駅伝の集計表の修正をしているところなのですが、区間順位を出すためにRANK関数を使用しています。オープン参加のチームを順位に反映させないように、範囲をCtrlを押しながらして「挿入→名前→定義」で指定しています。すると、順位がきちんと出なくなったのです。(←本来3位のはずが4位となり、その後の順位もずれてしまっています)ちなみに区間タイムは親時計から差し引いて出しています。どなたか教えて頂けないでしょうか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

私が下記例でやると下記の現象(問題点)がありました。 そう言う問題ではないでしょうか。 (例)A1:A10 12 3 11 5 4 2 6 4 5 1 (名前) A1:A4、A8:A10を範囲指定してaaaと名前を付けた。 (式)B1に=RANK(A1,aaa) といれ、A10まで複写(ここが曲者か)。 (結果)エラー表示回避はしてませんが 1 6 2 3 5 #N/A #N/A 5 3 7 順番は合ってますが、A5は範囲に入ってませんが5が出てしまいます。 しかしランク関数は本来、範囲に入ってないセルの値でも、範囲の中で(言えば)何番かを判定します。(値・中心主義とでも言いましょうか。) だから、RANKを使い複写で式を扱う時は注意が必要ということですね。 オープン参加のチームの行の特定列に何かサイン(コード)を持たせて、ランク数字を出さないようにしないと 紛らわしいですね。

hanamoto
質問者

お礼

大変丁寧な回答を頂いてありがとうございました。質問したあと、定義した範囲を良く見てみたら、同じセルを2回指定していました!本当に凡ミスです。お手数おかけして申し訳ありません。また分からないことがありましたらよろしくお願いいたします。

その他の回答 (1)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

オープン参加の識別はありますか? A B    C   D   E OP チーム名 区間1 区間2 区間3... O  一般1  1:20  2:40  3:60 S  招待1  0:50  1:45  2:30 としてOPにオープン参加はO、招待チームはSのようにします。 区間1の順位=IF($A2="S",SUMPRODUCT(($A$2:$A$9="S")*($B$2:$B$9<=B2)),"") 区間2の順位=IF($A2="S",SUMPRODUCT(($A$2:$A$9="S")*(C$2:C$9-B$2:B$9<=C2-B2)),"") 区間3の順位は区間順位2のコピーでOK 注意:繰り上げスタートには対応してません。

hanamoto
質問者

お礼

大変丁寧な回答を頂いてありがとうございました。質問したあと、定義した範囲を良く見てみたら、同じセルを2回指定していました!本当に凡ミスです。お手数おかけして申し訳ありません。また分からないことがありましたらよろしくお願いいたします。

関連するQ&A