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

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),""),""))
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
No.1
- 回答日時:
VBAとか使ったように、1発で表示させることはできませんが、EXCELの基本機能を利用すれば、近い形にはなります。
順位はEXCELの持つソート機能で並び替えすればいいでしょう。先頭のセルから1と入れてコピーしていけばいいですが、同じ試合回数があると順位が正しくならないですけど。
特定回数以上のものに限定したい場合は、抽出機能(フィルタ)で表示しないようにできます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの式がわかる方がおら...
-
Microsoft Officeを2台目のPCに...
-
Excelで〇のついたものを抽出し...
-
大学のレポート A4で1枚レポー...
-
Microsoft Formsの「個人情報や...
-
office2019 のoutlookは2025年1...
-
マイクロソフト オフィスのサポ...
-
Office2024インストール後の疑問点
-
パソコンを買い替える際、前の...
-
Excel 日付を比較したら、同じ...
-
outlookのメールが固まってしま...
-
Office 2021 Professional Plus...
-
別シートの年間行事表をカレン...
-
エクセルで質問です。 ハイパー...
-
以下マクロの処理を最終行まで...
-
エクセル 日付順に並べてかえた...
-
VBAファイルの保存先について
-
会社のOutlookにてメールを予約...
-
MicrosoftOfficeの1ユーザー2...
-
Office2021を別のPCにインスト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Microsoft Officeを2台目のPCに...
-
大学のレポート A4で1枚レポー...
-
マイクロソフト オフィスのサポ...
-
Office2021を別のPCにインスト...
-
エクセル 日付順に並べてかえた...
-
outlookのメールが固まってしま...
-
Excelで〇のついたものを抽出し...
-
Microsoft Formsの「個人情報や...
-
マクロ自動コピペ 貼り付ける場...
-
Office2024インストール後の疑問点
-
office2019 のoutlookは2025年1...
-
エクセルで質問です。 ハイパー...
-
エクセル 同じ数字を他の列に自...
-
別シートの年間行事表をカレン...
-
【Excel VBA】PDFを作成して,...
-
Excel 日付を比較したら、同じ...
-
パソコンWindows11 Office2021...
-
Office 2021 Professional Plus...
-
エクセル:一定間隔で平均値を...
-
Teams内でショートカットって貼...
おすすめ情報