• ベストアンサー

Excel、規定試合数以上の勝率上位者を求める

囲碁仲間30人の成績表を作っています。 A列(A3~A32)対局数、B列(B3~B32)に勝率が入力されています。 C列(C3~C32)に、対局数100以上で且つ勝率上位の10人を数字1~10(非該当者の欄はブランク)で表示したい。 現在は、別の列に対局数順、勝率順を求め、それを利用して対局数100以上で且つ勝率上位の10人を求めていますが、あまりスマートでなく気に入りません。

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

  • ベストアンサー
  • comv
  • ベストアンサー率52% (322/612)
回答No.7

こんにちは 例えば以下のような感じでしょうか   A    B   C 1 試合数  勝数  順位 2 106    21   式 3  85    34   ↓ 4  98    23   ↓ 5 112    45   ↓ 6 119    65   ↓ 7 153    18   ↓ セルC2に 式 =IF(A2>=100,TEXT(SUMPRODUCT((A$2:A$7>=100)*(B$2:B$7>B2))+1,"[>10];[=0];0"),"") 下行へ複写・・・A$2:A$7 B$2:B$7 がデータ範囲とした 場合です 式中は必要範囲に読替えて入力して下さい

ubonoti01
質問者

お礼

ご教示のとおり行いましたが、うまくゆきませんでした。 (セルC2~C7すべて空白となりました) 式の入力(ペースト)およびオートフィルでエラーも出ませんでした。 関数SUMPRODUCTは経験なく理解不十分ではありますが・・・。

ubonoti01
質問者

補足

できました。先刻「できなかった」旨の補足をしましたが、再度ご回答とおりでできました。有り難うございました。

その他の回答 (6)

  • O_Denwa
  • ベストアンサー率26% (46/172)
回答No.6

関数じゃないですけど。 B列の文字揃えを右寄せにしといて、 対局数100に満たない人の、勝率を入力するさい、 「'」(シングルクォーテーション)を数字の前に入れて、 あとは、普通にIF関数とRANK関数で求めてみるとか。 スマートじゃない上に、今度は勝率順求めるのが面倒そうだけど(^^;

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

#1のものです。フィルタオプションを使った解答を載せます。 テストデータとしてA1からC8まで下記データを入れてください。 対局成績表 氏名 対局数 点数 a 3 24 b 7 34 c 10 23 d 8 45 e 6 65 f 4 77 A10からC10まで下記データを入れて下さい。 A11には=B10と入れてください。 対局数 >5 成績表 >5 操作に移ります。データ-フィルタ-フィルタオプションの設定をクリック。 フィルタオプションの設定のウインドウで、 指定した範囲をON リスト範囲$A$2:$C$8 検索条件範囲$A10:$A11 抽出範囲$A13:$C25(例えばです) OKをクリック D14に関数式=IF(RANK(C14,$C$14:$C$17)<3,RANK(C14,$C$14:$C$17),"") を入れる。最下行まで複写。結果は 氏名 対局数 点数 b 7 34 c 10 23 d 8 45 2 e 6 65 1

  • moccos
  • ベストアンサー率43% (61/140)
回答No.4

もう#2さんがかかれてますが・・ 初めまして。 関数一発!で出来るかもしれませんが当方理解不能なので、 こんなのどうでしょうか? ○D列に規定対局数以上の勝率を記入する。 (100以上になる事も考慮してC2セルに数値を入力する) D4セルに =IF(A4>$C$2,B4,"") と入力する。最終行までオートフィル。 ○C4セルに =IF(IF(D4="","",RANK(B4,$D$4:$D$33,FALSE))>10,"",IF(D4="","",RANK(B4,$D$4:$D$33,FALSE))) 同じく最終行までオートフィル。 でD列を「非表示」にすれば良いかと思います。 一寸ださいかな?

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

#1解答したものです。対局数が一定数以上の条件が入っていませんでした。済みません。引き続き考えて見ますが むつかしそうです。 (1)対局数の順序(降順)にならべてしまっても良ければ、対局数MAXから100までの行に上記の方法を適用すれば、結果だけは得られる事は得られますが。 (2)フィルタオプションで対局数100以上を同シートの別のセル範囲に抜き出すことは出来ますが、それは お気に召さないですか。 (3)「別の列に対局数順、勝率順を求め、それを利用して対局数100以上で且つ勝率上位の10人を求めていますが」 とありますが、別範囲にコピーして別セットの表を作り、あとは目で見てえらんでおられるのですか。目で見てやるときは勝率順の表出やらないとむつかしいのでは。

  • 2002pon
  • ベストアンサー率48% (42/87)
回答No.2

どうしても1列必要な気がします。 条件に満たない勝率(この場合100戦未満)を例えばゼロに置き換えたような列を 作ります。 例)=if(A4<100,0,B4) これを例えばC列に作ったら、そのC列に対して、#1さんのようにRANK関数を適用 すればいいかと。 =IF(RANK(C4,$C$3:$C$32,0)>10,"",RANK(B5,$C$3:$C$32,0)) こんな感じで。

ubonoti01
質問者

お礼

そうですか、やはり一気に求めるのは無理ですか。残念。

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

RANK関数を使います。 テストデータとしてA1からB6まで下記データを入れてください。氏名と点数と考えてください。 a 21 b 34 c 23 d 45 e 65 f 18 C1セルに「==IF(RANK(B1,$B$1:$B$6)<4,RANK(B1,$B$1:$B$6),"")」(「」内の部分のみ)を入れて 下さい。強制改行されています。1行で入れてください。 $の付いているのは絶対参照で、必ずこのようにする必要があります。 B2からB6まで+フィルハンドルを引っ張って複写してください。すると a 21 b 34 3 c 23 d 45 2 e 65 1 f 18 となります。

ubonoti01
質問者

お礼

ご回答有り難うございます。が、わたしの質問を勘違いされているようです。 ご回答のテストデータ a 21 b 34 c 23 d 45 e 65 f 18 を、 106 21 85 34 98 23 112 45 119 65 153 18 として、 106 21 3 85 34 98 23 112 45 2 119 65 1 153 18 を求めたいんです。 (A列の値が100以上で、B列の値の上位3番目までの場合)

関連するQ&A

  • 複数の列の数字から順位を求める方法

    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種類の条件ごとに順位を表示させる計算式を教えてください

  • Excel ユニーク数1のものだけを数えたい

    Excelに関しての質問です。 例えばA列に「犬」「ねこ」「うさぎ」という文字列がそれぞれ複数散らばっているとして、B列には「犬A」、「犬B」、「犬C」… 、「ねこA」、「ねこB」…というように文字列がそれぞれ複数入っているとします。(アルファベットはA以降、どこまで入っているかわからないとします)(A列とB列の動物の種類はそれぞれ一致するものとします。) C列で、B列のユニーク数をカウントものを出します。 →ここからが本題なのですが、A列の動物に対して、B列の「ABC...」の数はいくつかを出したい(=D列)のですが、関数はどのようになりますか? ユニーク数が「1」であるものの数を数えればいいと思うのですが、式を教えていただきたいです。

  • Excelで該当項目に一致するデータ数をとりたい

    こんにちは。アべです。 Excelである列(グループ)に該当する情報が入力された列がいくつあるかを知りたいです。 そういうことことってVBスクリプトを使わず関数だけで調べることは可能でしょうか? [シートA]  グループ 数  A ??←ここでシートBの情報がある列数を出したい。  B ??  C ?? [シートB]  グループ 情報  A あ  B い  A  C う  B え 以上

  • エクセルで上位を条件付きで抜き出す関数式の方法。

     よろしくお願いします。    A   B   C   D 1  あ   50   1   2  か   20   5 3  さ   45   0 4  た   60  -1 5  な   15   10 6  は   90  -15 7  ま   75   2 8  や   30   3 9  ら   10  -2  と有ります。 まずCの数で-2以上2以下という条件でBの点数の上位3位、下位3までを抜き出したいと思います。つまり この表では条件に当てはまるものはA名”あ””さ””た””ま””ら”で、上位3では”ま””た””あ”になり、下位は”ら””さ””あ”となり    A   B   C   D   E 1              ま   ら             2              た   さ 3              あ   あ 4  このようになるようにしたいと思います。実際はA名データーの数がこの表の九つよりも多く、順位数も3位ではなく6位ぐらいまで考えています。  関数式で表す方法をご存じの方、よろしくお願いします。

  • Excel累積が規定数を超えたらまたゼロから累積

    言葉でうまく説明できないゆえ検索もままならず,ここで質問させていただきます。お願いいたします。 Excel2007です。理想図を添付しましたので,それに従い説明いたします。 A列に数値が入っています。1000行ほどあります。 それらの数値を上から順にA1+A2+…と加算していき,500になったらその行のB列にその合計を記入し,一旦ゼロにリセットし次のA列の行(添付の図ではA6)からまた加算を始め,500になったらその行のB列に合計を記入し…ということを,A列の数値が終わるまで繰り返す,という作業を行いたいと思います。 また,合計数がちょうど500になることはまれなので,近似のセルをとるようにします。例えば添付画像において,A5の段階での合計は480で,A6になると635ですので,A5のほうが500に近いためそのセルで区切ります。 関数でもマクロでもかまいません。 何かしらのヒントでもいただければと存じます。 よろしくお願いいたします。

  • Excelで1以上の数値のみ足したい。

       A  B  C 1  -1  1   0 2  -1  -1  -1 3  -2  1   -1 4  0   1   1 A1+B1=C1 ですが、 B列は1以上の場合のみ足したい場合、C1にはどのような関数を入れれば 良いでしょうか? A列及びB列の数値は都度変わります。

  • Excelで文字列を独自の二進数で表したい。

    A,B,C,D,Eのいずれかを含む文字が順不同でセルに入っているものから、 A=10000 B=1000 C=100 D=10 E=1 と置換して足した、二進数であらわしたり、逆にその二進数から文字列に戻したりしたいです。 (例:DAなら10010、EBCなら1101) VBAの自作関数を含めてExcelの関数でできる方法があればお教えくださると助かります。

  • エクセル 以上 以下

    教えてください。 A列B列に数値が入力されております。 (例えばA1:3 A2:5 B1:5 B2:6) C1列には A1が1以上3以下で且つ、B1が3以上4以下の場合は「1」そうでない場合は 「0」を 入力するという関数を作成し C2列には A2が4以上5以下で且つ、B2が4以上6以下の場合は「1」そうでない場合は 「0」を 入力するという関数を入れたいのですが どのようにすればいいのでしょうか? まったく入力の仕方が分かりません・・・。

  • エクセル ○の数

      勝敗   2019通算 通算 A ○-● B   CC    DD A ○-● B   CC    DD B ○-● A   CC    DD A ○-● B   CC    DD B ●-○ A   CC    DD   勝敗   2020通算 通算 B ●-○ A   EE    DD B ○-● A   EE    DD A ●-○ B   EE    DD A ○-● B   EE    DD B ●-○ A   EE    DD エクセル関数を使い Aの『○』2019通算、2020通算、通算、それぞれの数を数えたいのですが エクセルの A列・・・空白 B列・・・名前AまたはB C列・・・○または● D列・・・『-』 E列・・・●または○ F列・・・名前BまたはA のときに、COUNTIF関数を使うとC列やE列の『○』の数を数えるので G列以降の CCや、DDに、Aの○●の数が入りません どのような関数(複数ですよね?)使うとよいか教えて下さい

  • EXCELの上位3個の数値の集計

    EXCELの集計方法につきまして、ご教授をお願い致します。 EXCELで複数の数値の中で、上位3個の数値の合計を算出する場合。 通常はA列~K列までに数値が入っている場合 =LARGE(A1:K1,1)+LARGE(A1:K1,2)+LARGE(A1:K1,3) のように算出するのが一般的ですが・・・。 B、D、F、H、J列を集計対象から除きたい場合は、どのようになりますでしょうか? すなわち A、C、E、G、I列のみの上位3個の数値合計を算出したいのです。 すみませんが、よろしくお願いいたします。

専門家に質問してみよう