2009年10月20日

同姓同名を含む出席番号表示

【数式クイズ】 難易度:★★★☆☆
昨日の問題は、同姓同名の生徒がいないことが前提でしたが、今回は同姓同名の生徒がいる可能性もあるという条件で、同様に出席番号を表示します。
順位であれば、1位が1人、2位が2人いた場合は、3位を飛ばして次は4位、という具合に付けていけばいいのですが、出席番号ではそうもいきません。
ここでは、まったく同じ名前が複数あった場合、上のほうの行に登場するほど小さい番号を付ける、というルールにします。

生徒の名前の読みがなが入力されているのはやはりA2:A8のセル範囲で、これをもとに五十音順の出席番号を右隣のセルに表示させます。

quiz31.jpg

まずB2セルに数式を入力し、この数式をB8セルまでコピーします。
B2セルにはどのような数式を入力すればよいでしょうか?


【解答例】
=COUNTIF(A$2:A$8,"<"&A2)+COUNTIF(A$2:A2,A2)

最初のCOUNTIFで「自分よりも前の名前」の数を求め、2番目のCOUNTIFで「自分以前の行にある自分と同じ名前」の数を求めます。
「自分以前の行」は自らの行も含むので、最低でも1になり、同じ名前が上にあればその数だけ増えます。
「A$2:A2」の部分は、下にコピーすると、「A$2:A3」「A$2:A4」のように上端のセルは固定で下端のセルだけが拡張されます。

ちなみに、「1、2、2、4……」のような順位方式で番号を付けていきたい場合は、

=COUNTIF(A$2:A$8,"<"&A2)+1

だけでOKです。
対象の範囲が数値なら、この数式をRANK関数の代わりに使うこともできます。
なお、昨日の解答例の数式では、同姓同名がいた場合は「1、3、3、4……」のように付けられてしまいます。
posted by 土屋和人 at 08:36| Comment(0) | TrackBack(0) | Excelクイズ
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/33052935
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック