| 2022/06/22(Wed) 18:18:22 編集(投稿者) 2022/06/21(Tue) 19:05:14 編集(投稿者) 2022/06/20(Mon) 19:56:31 編集(投稿者)
> 東京太郎,90,70,50,60,80,1,3,5,4,2 > 神奈川二郎,70,70,60,60,50,1,1,2,2,3 > 千葉花子,40,60,50,70,80,5,3,4,2,1
名前には特に意味が無いので除外して考えよう。
90,70,50,60,80,1,3,5,4,2 70,70,60,60,50,1,1,2,2,3 40,60,50,70,80,5,3,4,2,1
なので、
点数 順位 { 90,70,50,60,80 } { 1,3,5,4,2 } { 70,70,60,60,50 } { 1,1,2,2,3 } { 40,60,50,70,80 } { 5,3,4,2,1 }
という対応関係になります。
しかし、順位を求めるためにはソートする必要があります。
なので、普通これを桐の関数だけで計算できると思いませんよね。
でも、項目計算式にチャレンジしてみましたら出来ました。
やはり、キモはソートでした。⇒ 1次ソート #大( [英語],#大( [数学],#大( [国語],#大( [理科],[社会] ) ) ) )
結局、項目計算式で5段ソートします。
ソートが出来ればその後は一本道です。⇒ #cond( [英語] = [最大値1], 1, [英語] = [最大値2], 2, [英語] = [最大値3], 3, [英語] = [最大値4], 4, [英語] = [最大値5], 5 )
なお余談ながら、今回の解法は冗長な計算式のオンパレードになるのでケアレスミスの温床のような状態になります。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ つまり、1文字でも間違えがあると正しい結果が得られません。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・ あくまでも私( ONnoji )の個人的な感想ですが、自分で作って置きながらハッキリ言ってこれって超センスが悪いと思います。
でも、求める結果が得られましたので、サンプルファイルを用意しました。
p.s.
私( ONnoji )は、ケアレスミスの温床となり、かつ暗号のような項目計算式よりも、イベント処理の手続きの方が好みです。
◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇
添付ファイルを削除したので以下を参考にしてください。
■横項目の順位の付け方の項目計算.tbl
項目番号 項目名 データ型 項目計算式 1 氏名 文字列 2 英語 数値 3 数学 数値 4 国語 数値 5 理科 数値 6 社会 数値 7 最大値1 数値 #大( [英語],#大( [数学],#大( [国語],#大( [理科],[社会] ) ) ) )
8 最大値2 数値 #大( #cond( [英語]<>[最大値1],[英語], 1, -1 ),#大( #cond( [数学]<>[最大値1],[数学], 1, -1 ), #大( #cond( [国語]<>[最大値1],[国語], 1, -1 ), #大( #cond( [理科]<>[最大値1],[理科], 1, -1 ), #cond([社会]<>[最大値1],[社会], 1, -1 ) ) ) ) )
9 最大値3 数値 #大( #cond( [英語]<>[最大値1] .and [英語]<>[最大値2],[英語], 1, -1 ), #大( #cond( [数学]<>[最大値1] .and [数学]<>[最大値2],[数学], 1, -1 ), #大( #cond( [国語]<>[最大値1] .and [国語]<>[最大値2],[国語], 1, -1 ), #大( #cond( [理科]<>[最大値1] .and [理科]<>[最大値2],[理科], 1, -1 ), #cond([社会]<>[最大値1] .and [社会]<>[最大値2],[社会], 1, -1 ) ) ) ) )
10 最大値4 数値 #大( #cond( [英語]<>[最大値1] .and [英語]<>[最大値2] .and [英語]<>[最大値3],[英語], 1, -1 ), #大( #cond( [数学]<>[最大値1] .and [数学]<>[最大値2] .and [数学]<>[最大値3],[数学], 1, -1 ), #大( #cond( [国語]<>[最大値1] .and [国語]<>[最大値2] .and [国語]<>[最大値3],[国語], 1, -1 ), #大( #cond( [理科]<>[最大値1] .and [理科]<>[最大値2] .and [理科]<>[最大値3],[理科], 1, -1 ), #cond([社会]<>[最大値1] .and [社会]<>[最大値2] .and [社会]<>[最大値3],[社会], 1, -1 ) ) ) ) )
11 最大値5 数値 #大( #cond( [英語]<>[最大値1] .and [英語]<>[最大値2] .and [英語]<>[最大値3] .and [英語]<>[最大値4],[英語], 1, -1 ), #大( #cond( [数学]<>[最大値1] .and [数学]<>[最大値2] .and [数学]<>[最大値3] .and [数学]<>[最大値4],[数学], 1, -1 ), #大( #cond( [国語]<>[最大値1] .and [国語]<>[最大値2] .and [国語]<>[最大値3] .and [国語]<>[最大値4],[国語], 1, -1 ), #大( #cond( [理科]<>[最大値1] .and [理科]<>[最大値2] .and [理科]<>[最大値3] .and [理科]<>[最大値4],[理科], 1, -1 ), #cond([社会]<>[最大値1] .and [社会]<>[最大値2] .and [社会]<>[最大値3] .and [社会]<>[最大値4],[社会], 1, -1 ) ) ) ) )
12 強み_英語 整数 #cond( [英語] = [最大値1], 1, [英語] = [最大値2], 2, [英語] = [最大値3], 3, [英語] = [最大値4], 4, [英語] = [最大値5], 5 ) 13 強み_数学 整数 #cond( [数学] = [最大値1], 1, [数学] = [最大値2], 2, [数学] = [最大値3], 3, [数学] = [最大値4], 4, [数学] = [最大値5], 5 ) 14 強み_国語 整数 #cond( [国語] = [最大値1], 1, [国語] = [最大値2], 2, [国語] = [最大値3], 3, [国語] = [最大値4], 4, [国語] = [最大値5], 5 ) 15 強み_理科 整数 #cond( [理科] = [最大値1], 1, [理科] = [最大値2], 2, [理科] = [最大値3], 3, [理科] = [最大値4], 4, [理科] = [最大値5], 5 ) 16 強み_社会 整数 #cond( [社会] = [最大値1], 1, [社会] = [最大値2], 2, [社会] = [最大値3], 3, [社会] = [最大値4], 4, [社会] = [最大値5], 5 )
|