アプリ版:「スタンプのみでお礼する」機能のリリースについて

A列氏名、B列勝数、C列負数、D列対局数、E列勝率
の表に何人かのデータが入力されていてF列にその順位を表示させるにはどのような計算式をF列のセルに入れればよいでしょうか。ただし次の条件つきです。
(1)勝数の多いものを上位、同一勝数の場合は勝率の高い方を上位とする場合
(2)勝率の高い方を上位とするが、その者がA勝B敗
のとき(A+C)勝(B+D)敗の者のほうを上位とする場合
ただし、A,B,C,Dは正の整数でC>=Dのとき
また
(3)別の列(全員の分)に全員の相互の対戦の勝ち
負けが分かるようになっているとき、(1)とくみあわせ
勝数の多い者を上位、同一勝数のときは当事者同士の
勝者を上位、ここで3すくみになったときは勝率の高い方を上位と決めたとき
(4)同様に(2)の条件で順位が同一となったとき当事者同士の勝った方を上位とする場合
の4種類の条件ごとに順位を表示させる計算式を教えてください

A 回答 (12件中1~10件)

条件は質問者さんにしかわからないようなので、


一つヒントを書きます。

優先させたいもの順に左から項目を入力していきます。
例:
A1から 勝数、勝率、(2)で出た数値、年齢・・・
こんな感じに。

で、2行目に適当な数値を入力し、
E2に =A2*1000000+B2*1000000+C2*100+D2*-1
としてみてください。
この数字を元にランクをつけます。

これは、項目によって重みづけを分けていますよね。
わかっていただけるでしょうか?
    • good
    • 0
この回答へのお礼

なるほど、これで(1)はなんとかなりそうです。
ただ(2)~(4)はまだ自信がありません。
ここでもう一度質問の趣旨を説明いたします。
大会の規模(参加者数)が大きいときは勝数を優先させ、小さいときは勝率を優先させたいと考えました。ただ同一順位になったときのことを考え若干の条件を付加しました。これが(1)、(2)ですが(2)は対局数をかなり重視する欲張った条件を付けましたので複雑となったものです。
このほか更に欲張って順位同位者間の対戦結果などを反映したいと考え、(3)、(4)となりました。
申し遅れましたが大会参加者の対戦数が同一ではなく、かなりばらついているための苦肉の策です。
よろしくご教授下さい。またソフトはお察しのとおり「エクセル」です

お礼日時:2005/02/24 17:01

#6



>このばあいは、F,E,D,H,G,C,B,A
D氏:5勝0敗(10割)
H氏:6勝2敗(7.5割)
だと、D=>Hの順ってことですよね。・・・(1)


では、
I氏:6勝1敗(8.6割)
が入ったらどうなりますか?


D氏:5勝0敗(10割)
I氏:6勝1敗(8.6割)
この二人を比べると
上位者 (a+c)勝(b+d)敗
下位者  a勝   b敗
でc>=d の関係が成立しているので
---------
上位者 (5+1)勝(0+1)敗
下位者  5勝   0敗
 1>=1
---------
I=>D の順ってことになる。・・・(2)


H氏:6勝2敗(7.5割)
I氏:6勝1敗(8.6割)
この二人を比べると
上位者 (a+c)勝(b+d)敗
下位者  a勝   b敗
でc>=d の関係が成立しない
---------
H氏 (6+0)勝(6+1)敗
I氏  6勝   1敗
 0>=1
---------
I=>H の順ってことになる。・・・(3)



だと、D=>Hの順ってことですよね。・・・(1)
I=>D の順ってことになる。・・・(2)
I=>H の順ってことになる。・・・(3)

よって、
I=>D=>H

これで、合っていますか?

この回答への補足

H氏(6+0)勝(1+1)敗
I氏 6勝   1敗
を比べると、C=0、d=1で C>=dを満足していないため H氏は I氏の上位にはなり得ず
ご指摘のように、I,D,H の順になります。

補足日時:2005/02/25 21:16
    • good
    • 0

#9への補足を読みました。



> D2に=B2+E2と入れ、

D2に=B2+C2と入れ、ですね。

発想はとても面白いと思いました。しかし、他の方もおっしゃったようにまず、アルゴリズムの見直しが必要です。数学のカテで聞いてくださいませんか?ランク付けに重要な重み付けをする数式はかける、足す、で充分事足りると思います。私には少なくとも今は思いつきません。
関数でなければVBAで一つずつ丹念に見ていく方式がいいと思います。処理するのは何にせよまず大切なのは考え方ですね。

この回答への補足

ご指摘いただいたとおり、D2に=B2+C2と入れ、のまちがいでした。このほかに#9に対する補足だけでは質問の(2)の条件に対する演算式のみをF列にと要求しているように受け取られる恐れがありますが、F列の右に3列を挿入していただき、計4列として質問の(1)(2)(3)(4)に対する演算式を知りたいわけです。この場所を借りて補足(訂正)させていただきます。

補足日時:2005/02/25 20:52
    • good
    • 0

何度もすみません。


#9に間違いがありました。

A2から右に 5、0、=SUM(A2:B2)、=E2>=0.5、=A2/C2、20、=RANK(G2,$G$2:$G$3)

上の20の次の、項目「作業列」の下のセルですが
G2に =A2*10000+D2*10000+E2*100+F2
としてください。
その右のセル、H2が =RANK(G2,$G$2:$G$3) です。
    • good
    • 0

#3、#4、#5、#7、#8です。


これで6回目の回答となります。
#8は読んでいただけたでしょうか。
#5に対するお礼を拝見しましたが、
数学のカテゴリで、順位のつけ方を質問され、
やりたいことがはっきりしてから再度ここで質問されてはどうでしょう?
やりたいことがわかれば、回答は出ます。

そして次からの質問には、どのセルに何が入力されていると
具体的に書いてください。
例えば#8の私の回答のように。
いかがでしょうか。

この回答への補足

何回もご解答恐縮です。補足が追いつかないですみません。具体的に書きましょう
セルA1に対局者名と入れ、A2から下方にA,B,C,D,E,F,G,Hと8人の名前を入れます。
セルB1に勝数と入れ、B2から下方に2,3,4,5,7,8,4,6
と入れます。セルC1に負数と入れC2から下に0,1,2,0,2,3,0,2と入れます。D1に対戦数と入れ、D2に=B2+E2と入れ、フィルハンドルで引き下げます。E1に勝率と入れE2に=B2/D2と入れ、同様に引き下げます。(IF関数を使い、D2が0のときは””にすることも勿論入れておきます)F1には順位と入れます。
こうすると#6の回答者さんが書かれているA氏2勝0敗、勝率10割・・・・以下の表が出来るでしょう。
この回答に私が補足したような順位結果がF2以下に出るようにしたいのです。よろしくお教えください。
更に補足しますと、質問(3)、(4)のため用意する列はG1~N1にA~Hと入れてお互いの対戦結果を
例えば、H2に1と入れてA氏がB氏に1勝していることを表すこととし、以下同様に相互の対戦結果を入れていって表を完成させます。自分と自分の対戦は無いため、G2には数値を入れることは無いので、G2セルの
左上から右下にいたる対角線を予め入れておきます
この対角線は更にH3,I4・・・とのびてN9にいたることがお分かりでしょう。お互いに対戦の無いときはそのセルは空白のままとします。このようにすればG2からN2までの数値の和はA氏の勝数の和となります。
すなわちB2=SUM(G2:N2)などとすれば先に述べたB列の数値が自動的に入力されます。一方G~N列を縦に合計
すればA氏から~H氏までのそれぞれの負数の和が出ますのでこれをC列に入れれば負数も自動的に計算できます。またお互いの交点を見れば行には勝数、列には負数が入っていますのでお互いの勝ち負けもわかります。更にO列を作って、生年月日を入力しておけば、同一順位になったとき年長者順という、条件も加味するようにしたいものです。長々と記しましたが。おわかりいただけたでしょうか。

補足日時:2005/02/24 18:18
    • good
    • 0

次のように入力してください。



A1から右に 勝数負け試合数勝率5割以上か勝率年齢作業列ランク

A2から右に 5、0、=SUM(A2:B2)、=E2>=0.5、=A2/C2、20、=RANK(G2,$G$2:$G$3)

A3から右に 6、13、C3:E3は上の行をコピー、F3に20、G3は上のセルをコピー

結果は期待したものになりましたか?

※あ、年齢が高いと損なんですね。先ほどはマイナス1をかけたんですが、かけなくてもいいですね。直しました。
※また、何に重きを置くかはそれぞれの考え方なので、それについては全く考慮に入れていません。
    • good
    • 0

#3、#4、5#です。



> 5勝0敗、A3さんの成績は7勝2敗でA2さんの勝率の方がA3さんの勝率より高いがc=dなのでc>=dを満足しているため、

この場合のdとは誰の勝ち数(負け数)で、
dとは誰の勝ち数(負け数)ですか?
#1の方への補足と数字が違っていますね。

この回答への補足

この場合の cとはA3さんの勝数7とA2さんの勝数5との差、すなわち7-5=2の2で、dとはA3さんの負数2とA2さんの負数0との差、すなわち、2-0=2の2のことです。
ややこしくてすみません。

補足日時:2005/02/24 17:44
    • good
    • 0

(2)は、アルゴリズムからして無理なのでは?



仕様を整理しましょう。

例えば
○勝×敗(勝率)とし

A氏:2勝0敗(10割)
B氏:3勝1敗(7.5割)
C氏:4勝2敗(6.6割)
D氏:5勝0敗(10割)
E氏:7勝2敗(7.7割)
F氏:8勝3敗(7.2割)
G氏:4勝0敗(10割)
H氏:6勝2敗(7.5割)


の場合、順位はどうなりますか?

> 勝率では上位の5勝0敗者より
> (5+2)勝(0+2)敗者、すなわち
> 7勝2敗者を上位とするということです
で書いているように
勝率の低いE氏が
D氏より上位なんですよね。
では、ABC各氏は、E氏と比べると順位は?

この回答への補足

このばあいは、F,E,D,H,G,C,B,A
の順に1~8位と決めたいのです。
上下隣接する2者の間で、必ず
上位者 (a+c)勝(b+d)敗
下位者  a勝   b敗
でc>=d の関係が成立していることが
お分かりいただけたかと思います。
勝率だけでなく、対戦数をかなり重視した結果です。

大会参加者の対戦数にばらつきがあるため、勝率だけでは対戦数の多い者が報われないのでこの案を考え出したものです。ご理解いただけましたでしょうか。

補足日時:2005/02/24 17:09
    • good
    • 0

#3です。



> a=5,b=0,c=2,d=2 c=d 

この値はどこに入力されていますか?

この回答への補足

説明が下手ですみません。例えば
セルB2に5が、C2に0が、B3に7が、C3に2が
入力されていたときをいいます。
セルA2に名前が出ている人(A2さんとする、以下同様)の成績は5勝0敗、A3さんの成績は7勝2敗でA2さんの勝率の方がA3さんの勝率より高いがc=dなのでc>=dを満足しているため、A3さんの方を上位とするものです。
大会での各人の対戦数がまちまちであるため、勝率とともに、対戦数をも評価の対象としたいので、この案を思いつきましたが、評価の対象数値が複数の列にまたがっているためRANK関数をどう使ってよいかわからなくなりました。よろしくおしえてください。

補足日時:2005/02/24 14:47
    • good
    • 0

(1)


F列を作業列にし、F2に =B2+E2
G2に =RANK(F2,$F$2:$F$10) で下までコピーしてください。

(2)
(1)の話ではA勝B敗はB2勝C2敗ですね。CとDはどこの数字ですか?

(3)
> 別の列(全員の分)に全員の相互の対戦の勝ち
> 負けが分かるようになっているとき、

総当りですか?1行目の見出しに全員の名前が並んでいて、
交差したセルには何と入力されているのですか?

(4)
すでに(3)で当事者同士の勝ち負けが出ているのに、
(4)で更に持ち出すのはどうしてでしょう?
    • good
    • 0
この回答へのお礼

#5でお礼をいたしましたが、ここで、すでに(1)のご解答をいただいていたのですね。重み付けも自然にちゃんと付けられていました。見落としていて申し訳ありませんでした。

お礼日時:2005/02/27 09:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!