過去の桐井戸端BBS (桐ver.8)
14921 2つの項目を元にした順位づけをするには? atsats 2002/01/30-11:09
桐V8SP6にて

二つの項目をキーにした順位づけをうまくする方法はあるでしょうか。
たとえば、
[A]...科目Aの得点
[B]...科目Bの得点
[C]...科目Cの得点
[D]...科目AからCまでの最高点(#横最大([A],[C])
[E]...科目AからCまでの合計点(#横合計([A],[C])
[F]...順位

合計点[E]の高い順に順位をつけ、同点の場合には科目の点がより高い方[D]を高い順位にする。

実際の作業は一括処理の中で行います。

単純に順位関数を使用するとキーを2つ以上使うことができません。
グループ関数を使用すると同順位の次が数字が飛ばずに連番になってしまいます。

お知恵を拝借できたら幸いです。


14926 Re:2つの項目を元にした順位づけ pokopon 2002/01/30-12:46
記事番号14921へのコメント
atsatsさん こんにちは

>合計点[E]の高い順に順位をつけ、同点の場合には科目の点がより高い方[D]を高い
>順位にする。
同業者としては、同じ合計得点なら、同じ順位になるんじゃないかな?
最高点で更に順位分けするなんて、生徒に「不公平感」を与えませんか?
だって、得意科目、不得意科目があるんですから。
あくまで総計で順位つけ(同一順位があったっていいじゃないですか)

という事はさておき・・・・・、(^^ゞ

あくまで、一つの手法としてです。

もう一つ項目を設けて下さい。
例えば[順位用合計]でも結構です。
置換 [順位用合計]=[E]+[D]/100
とします。
ここをキーとしてソートし、ここを基準として
置換 [順位] = #順位([順位用合計])
でどうでしょうか?

合計点が同じなら、整数部が同じ、小数部は「最高点」。
同じ総点でも、小数部の大小で順位付けができます。
どちらも同じなら、同じ順位となります。

お試しください。


14927 Re:2つの項目を元にした順位づけ 悲しげ 2002/01/30-13:15
記事番号14921へのコメント
どもっ、atsatsさん
例えばもうひとつ作業用の項目を設けます。
数値型の項目で、その項目計算式を [E]+[D]/1000
(合計点数は最大100点=3桁と仮定しています)
順位関数は、この項目について行うと云うものです。
A=70,B=70,C=70だったら、この値は210.07、
A=80,B=60,C=70だったら、この値は210.08、
A=90,B=50,C=70だったら、この値は210.09となります。

ps:
A=80,B=未定義,C=70のような場合も検証してみて下さい。
14928 Re:2つの項目を元にした順位づけ 悲しげ 2002/01/30-13:24
記事番号14926へのコメント
あら、pokoponさん、殆ど同じですね。(^^;)

>置換 [順位用合計]=[E]+[D]/100

私は科目の最高は100点をイメージしたのですが、
この式だと100点の場合、どうなるですます?
14929 Re:2つの項目を元にした順位づけ atsats 2002/01/30-13:26
記事番号14921へのコメント
pokoponさん
悲しげさん

早速のご教示ありがとうございます。
みなさんのお知恵には感心してしまいます。

ところで
同業者云々のコメント
全くそのとおりなのですが、
今回は学校ではなく体操競技の試合のプログラムを作成しております。
予選で上位○○位が決勝に進むわけですが、
そのときに同点がいた場合の処理を考えていたわけです。

ということで、今後もよろしくお願いします。
14931 Re:2つの項目を元にした順位づけ うにん 2002/01/30-13:51
記事番号14927へのコメント
悲しげさん

>例えばもうひとつ作業用の項目を設けます。

項目の代りに変数が必要ですが、
#計算(#代入(&昭和年,#連番),#条件選択([E]=#直前値([E],0) .and [D]=#直前値([D],0),#直前値([],1),1,&昭和年))
で置換する。

あるいは「#行番号」が置換でも使えるようなので、
#計算(#条件選択([E]=#直前値([E],0) .and [D]=#直前値([D],0),#直前値([],1),1,#行番号))
(ヘルプには「表の編集条件式と、フォームの編集属性式で使用できます。
」となってるのがちょっといやですが、これだと項目計算式にもできます。)

14932 Re:2つの項目を元にした順位づけ pokopon 2002/01/30-14:10
記事番号14928へのコメント
どもっ!! 悲しげさん

>>置換 [順位用合計]=[E]+[D]/100
>この式だと100点の場合、どうなるですます?

(^^ゞ 重箱の隅!!!


戻る