• ベストアンサー

エクセルで出現回数のランキング表を作りたい

・6桁以下の選手番号 ・試合日(西暦8桁) ・試合結果 ・その他 無作為の順番で上記のデータが入ったエクセルの表があるのですが、 この表を使い、試合に出た回数が多い順番で選手をランキング付けしたいのです。 関数やVBAは若干かじったことある程度の経験しかないのですが、 COUNTIF関数を使い、その選手にとって、 その試合が何試合目なのかは、一応目で分かるようにはなりました。 ※ 選手番号がA列だとすると、B1=COUNTIF($A$1:A1,A1)をB列にコピーしました。 本当はこの数字を上手く使ってランキング表を作ろうと思ったのですが、 良い案が浮かばず、今回質問させていただきました。 1位 選手番号 試合回数 2位 選手番号 試合回数 ・ ・ ・ できることなら、上記のようにランキング表を作り、 また選手の数が多いので3回以上試合を行なっている選手だけで表を作りたいのですが、 関数やVBAを使い上記の表を作成する良い案はありませんでしょうか?

  • PPMD
  • お礼率34% (8/23)

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 一例です。 せっかくCOUNTIF関数で試合数を出されているので、余計なお世話になるかもしれませんが・・・ ↓の画像のようにこちらで勝手に表を考えてみました。 作業用の列を2列使わせてもらっています。 作業列E2セルに =IF(A2="","",IF(COUNTIF($A$2:A2,A2)=1,COUNTIF($A$2:$A$100,A2),"")) F2セルに =IF(E2="","",COUNTIF($E$2:$E$100,">"&E2)+COUNTIF($E$2:E2,E2)) として、E2・F2セルを範囲指定し、F2セルのフィルハンドルで下へずぃ~~~!っとコピーします。 (F列は単純にRANK関数で処理してしまうと、同試合数の場合抽出が困難になりますので、敢えて同試合数でも順位を変えています。 尚、同試合数の場合は上側の行の方が上位になります) そしれ、I2セルに =IF(COUNT($E$2:$E$100)<ROW(A1),"",INDEX($A$2:$A$100,MATCH(ROW(A1),$F$2:$F$100,0))) J2セルに =IF(I2="","",COUNTIF($A$2:$A$100,I2)) という数式を入れ、I2・J2セルを範囲指定し、J2セルのフィルハンドルで下へコピーすると 画像のような感じになります。 数式は100行目まで対応できるようにしていますが、 データ量によって範囲指定の領域はアレンジしてみてください。 以上、長々と書きましたが 参考になれば幸いです。m(__)m

PPMD
質問者

お礼

画像まで添付していただきありがとうございました!!! 補足もしていただき、おかげさまで上手くいきました!

その他の回答 (3)

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

シート1ではA1セルに選手番号、B1セルに試合日、C1セルに試合結果、D1セルにその他の文字列がそれぞれ入力されておりデータが2行目から下方にあるとします。 最初にすべての選手について試合回数についてのランク付けの方法を示します。当然3回以上試合を行っている選手についてもランク付けする方法についてもその後に示します。 シート1には作業列としてE1セルには試合回数と文字列を入力しE2セルには次の式を入力します。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,COUNTIF(A:A,A2),"")) F2セルには次の式を入力します。 =IF(E2="","",RANK(E2,E:E)+COUNTIF(E$2:E2,E2)/10000) E2セルとF2セルを選択してそれらの式を下方にオートフィルドラッグします。 答えとなるシート2ではA1セルに順位、B1セルに選手番号、C1セルに試合回数と文字列を入力します。 A2セルには次の式を入力します。 =IF(ISNUMBER(SMALL(Sheet1!$F:$F,ROW(A1))),INT(SMALL(Sheet1!$F:$F,ROW(A1))),"") B2セルには次の式を入力します。 =IF(A2="","",INDEX(Sheet1!A:A,MATCH(SMALL(Sheet1!$F:$F,ROW(A1)),Sheet1!$F:$F,0))) C2セルには次の式を入力します。 =IF(B2="","",INDEX(Sheet1!E:E,MATCH(SMALL(Sheet1!$F:$F,ROW(B1)),Sheet1!$F:$F,0))) 最後にA2セルからC2セルを選択しそれらの式を下方にオートフィルドラッグします。 試合回数が3回以上の選手だけを表示するのでしたらシート1のE2セルに入力する式を次のようにして下方にオートフィルドラッグすればよいでしょう。シート2での変更は必要ありません。 =IF(A2="","",IF(COUNTIF(A$2:A2,A2)=1,IF(COUNTIF(A:A,A2)>=3,COUNTIF(A:A,A2),""),""))

PPMD
質問者

お礼

知らない関数がいくつかあり、勉強になりました! ありがとうございます!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

No.2です! たびたびごめんなさい。 投稿した後で質問を読み返していると・・・ >選手の数が多いので3回以上試合を行なっている選手だけで・・・ という事ですので、 前回の作業列E2セルの数式を変更してみてください。 =IF(AND(COUNTIF($A$2:A2,A2)=1,COUNTIF($A$2:$A$100,A2)>=3),COUNTIF($A$2:$A$100,A2),"") という数式にして、後の作業は前回と同じで大丈夫だと思います。 どうも何度も失礼しました。m(__)m

  • nza49739
  • ベストアンサー率46% (29/62)
回答No.1

VBAとか使ったように、1発で表示させることはできませんが、EXCELの基本機能を利用すれば、近い形にはなります。 順位はEXCELの持つソート機能で並び替えすればいいでしょう。先頭のセルから1と入れてコピーしていけばいいですが、同じ試合回数があると順位が正しくならないですけど。 特定回数以上のものに限定したい場合は、抽出機能(フィルタ)で表示しないようにできます。

関連するQ&A

  • エクセルで発生頻度ランキング表を作りたい

    お世話になります。 規格アウト品の発生リストがあります。 このリストのデータがたまってきたのでデータの有効活用のために発生頻度の高い品種のランキング表を作りたいのです。 表はD列に製品名が入って下にデータが追加されていきます。 しょっちゅう問題を起こす品種の発生回数が分かるようにB列にcountif関数で品名入力時に発生回数が分かるようにしました。 これを回数の多い順でソートすると同じ品名がその回数だけ出てきてしまいます。 例えば突出して登録回数が多い品名は上からいくつも表記されます。 その都度手作業で表の上から重複品名を削除してリストを更新することは できるのですが、複数の担当者が簡単に出来るようにしたいのです。 発生頻度表の発生頻度の多い順で品名が重複しないリストを作りたいのですが。 例えばAという品名が15回登録されていて、次に多いDという品名が10回、Bが9回登録されていると上から15-11までが同じ品名が並び、10回登録品名にAとDが出てきて、その次に9回の品名A、D、B・・・が並んで表示されてしまいます。 この重複表示が無いリストを作りたいのですが。。。 分かりにくい質問で申し訳ありませんが宜しくお願いします。

  • EXCELでランキング表の作成

    Excelでランキング表を作成したいと思いますが シート1に、以下の表があるとします A列(地点名) B列(標高) ・・・ M列(時分) N列(気温) A地点      500       5時     +1.2 B地点      550       6時     -0.8 C地点      600       6時     -1.2 D地点      530       5時     -0.8 シート2に、気温(N列)の低い順に並べ替えを行って N列(気温) A列(地点名) B列(標高) ・・・ M列(時分)  -1.2      C地点      600       6時      -0.8      B地点      550       6時      -0.8      D地点      530       5時      +1.2      A地点      500       5時      という表を作成したいと思います。 VBAを使わずに、通常の関数のみで作成するためには どのような手法がありますでしょうか? また、「ツール」-「並べ替え」等も使用したくありません。 わがままな質問ですが、御教授よろしくお願い致します

  • エクセルでランキング表を作る

    エクセルでランキング表を作りたいのですが方法がわからないので どなたかご教授お願いします。 自分がやりたいのはランキング表用のエクセルファイル(以下A)で いくつかのエクセルファイル(以下B・C・D)を参照(リンク貼り付け)し その数値をランキングのように表示したいと思っています。 B・C・Dのファイルは毎日数値がかわります。 ですのでAは毎日他ファイルを参照し中身が更新されます。 Aに表示されるランキングは1位から順番に表示したいです。 (Bが1番数値がよければBが1番上になり、2番なら2番目の位置になる) 詳しく解説されているサイト等でもよいのでお願い致します。

  • エクセルでスコアランキング表作成について

    エクセルに関する質問です。 エクセルでスコアランキングを作成したいと考えております。 ゲームのスコアを入力していき、自動で順位順に並び替え、 パワーポイントにリンクで自動表示という流れを作りたいと考えております。 (1)入力sheet A列:順位 RANK関数(D列のスコアで順位) B列:参加者NO(固定001~) C列:ニックネーム(任意) D列:スコア 3-4桁の数値 (2)順位表sheet A列:順位 1~50 B列~D列→A列と入力sheetのA列を検索値として、参加者NO、ニックネーム、スコアを順位順に表示 という二つのsheetをつくっております。 スコアが同値で同じ順位が複数発生した際に、順位表sheetでN/Aになってしまいます。 同じスコアだった場合に、順位表に 4位、5位、5位、7位というように表示し、 同順位の人を表示する方法(vlookupですと、上の行しか読み込まれず・・・)が ありましたらご教示いただけないでしょうか? 御確認の程、よろしくお願いします。

  • EXCEL 売上ランキング表を作りたいです

    売上ランキング表を作りたいです、VLOOKUPの関数を使ってやってみたのですが、 ”範囲”の左端はこの場合絶対に店舗名でなければいけないのでしょうか? 下の表だと左端にランキングが来ていて、 これを参照する感じにしたいのですが、エラーになります。 =VLOOKUP(B2,範囲を先月のデータすべてを入れます,1,FALSE) 上の式では無理した。やはり左端のランキングを右側(F列)に移動して =VLOOKUP(B2,$B$20:$I$29,5,FALSE)とかにしないとだめでしょうか? Branch 平日 週末 平均 先月 1 A店 105.1 88.4 96.8 -1 2 B店 38.6 39.6 39.1 ▲3 3 C店 23.0 26.5 24.7 ▼2 先月のデータ 1 A店 123.5 102.4 112.9 2 C店 39.9 39.5 39.7 3 B店 23.7 26.7 25.2

  • EXCEL 番号をふりたい

    A列に件名が並んでいる表があります。 何回も同じ件名が現れるため、区別するための番号をB列に振りたいと思います。 COUNTIF($A$2:A100,A100)という関数で番号をつけられると思ったのですが、 この表は、新しいデータが必ず最後の行に書かれるわけではなく、途中に挿入される可能性があることがわかり、この方法は採れないことがわかりました。 何かいい方法がありませんでしょうか? よろしくお願いします。

  • 教えてください!エクセルで二つの表をまとめる方法

    エクセルの二つの表を一つにまとめる方法がわかりません。 表1(○○組合加盟店リスト)・表2(○○協会加盟店リスト)があります。 この二つの表をひとつにまとめ、両方の団体の加盟店なのか、片方の団体の加盟店であればどちらの団体に加盟しているのかわかる表にしたいです。 それぞれ列には左から順番に会社名・住所・電話番号・FAX番号・・・と類似した内容が入っておりますが、会社名や住所は若干入力の仕方に統一性が無いので、共通キーとしては電話番号が使えそうです。 また表一は8000行ぐらい、表2は1500行ぐらいです。 よろしくおねがいします。 ○やってみたこと:両方の表ともA列に電話番号をおき、A列を優先に昇順に並べ替えました。そして表1の下に表2を貼り付け、VLOOKUP関数などを使ってユニーク表を別なシートに作りました。関数は一回目に出てきた値しか拾ってくれないみたいなので、二回目に表1と重複している表2のデータがどれなのか・・・

  • Excelの関数

    現在、Excelで 『検索キーワード』 のランキング表を作成しております。 1位から順番に検索キーワードと検索回数を並べて表示していますが、 (A列に順位、B列に検索キーワード、C列に検索回数) 検索回数が同数だった場合、順位も同数にしたいと考えておりますが、こちらを実現する関数を教えていただけますでしょうか。 (ex. モバイル、スマートフォンといった検索キーワードがそれぞれ異なっても、検索回数が同じ23回で、あれば順位も同じ1位にしたい) どうぞよろしくお願いいたします。

  • Excel COUNTIF関数

    お世話になります。 countif関数について教えてください。 12345 12345A countif関数で、ワイルドカードを使用して、=countif(A:A,"12345*") とし、上記の12345で始まる文字列をカウントしようとしたのですが、 12345Aはカウントされ、12345はカウントされませんでした。 上記のような文字列を両方ともカウントさせるにはどうしたらいい でしょうか。 よろしくお願いします。

  • Excel 合計の出し方について

    Excelのカウントについて質問です。      A列   B列 1行目 1-2-3  1200 2行目 2-3-1  800 3行目 4-5-1  400 4行目 3-2-1  2000 5行目 1-3-2  500 6行目 答え→ ( 4500 ) 上記の表があり、B列6行目にA1~A5の内容を確認し、 条件に応じた計算結果を出したいです。 条件としては、1-2-3、2-3-1、3-1-2など、同じ数字で構成されているものであれば、順番が違っていても同じものとみなして合計します。 ※ちなみに1-2-3は文字列です。 ※上記の表では、1-2-3でできる組合せの合計で4500という答えを出してます。 思いつくままに関数を書いてみました。 =SUM(SUMIF(A1:A5,{"1-2-3","1-3-2","2-1-3","2-3-1","3-1-2","3-2-1"},B1:B5)) これでもできなくはないのですが、組合せをたくさん書くのがとても面倒で、 仮に、1-2-3-4 や、1-2-3-4-5 など組合せが多くなった場合はとても上記のやり方では対応できません。また、組合せは1桁だけでなく2桁(1-3-10)、3桁(5-80-100)も存在します。 効率良く書ける方法があればおしえてください。

専門家に質問してみよう