ゲームの記録に順位を付けることができますか?

このQ&Aのポイント
  • エクセル2000でゲームの計時データを管理していますが、順位を付けることは可能でしょうか?
  • 順位を振る方法や条件、順位の変動について教えてください。
  • ゲームの記録を管理するために役立つエクセル2000の機能やテクニックについても知りたいです。
回答を見る
  • ベストアンサー

ゲームの記録に順位を付ける事出来ますか?

エクセル2000です。 以下の様なゲームの計時データがあります。これに順位を付けることできますか? 1行目の A列=年月日 B列=タイム C列=車名  そして D列に、何番目に早いのか順位を振りたいのです。 2~5行目迄を行挿入の為の空欄にし(行選択して私登録のショートカットCtrl+Alt+↓キーで挿入) 6行目から12行目迄を逆順の年月日にし、プレイした「本日」の行に時計や車名を追加します。 その都度、D列にふられた順位が変動するようにしたいのです。 47'38"15 Bugatti Veyron 16.4 51'15"50 McLaren MP4-12C 48'30"43 Koenigsegg CCXR Edition 47'17"33 Pagani Zonda Cinque 50'04"85 Bugatti Veyron 16.4 50'01"70 McLaren MP4-12C 47'16"50 Pagani Zonda Cinque 50'02"17 Koenigsegg CCXR Edition 48'44"73 Koenigsegg CCXR Edition

noname#245250
noname#245250

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

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

何度もごめんなさい。 投稿後に気づきました。 コード内の変数の宣言 >i As Long, は全く不要です。 コード内に「i」という変数は使っていませんので、 そのままでも問題ありませんが、目障りだったら消してください。m(_ _)m

noname#245250
質問者

お礼

>i As Long,は全く不要です。 了解しました。10/20 閉じる様に要請が来て、もう2週間が過ぎたんですね。当方なんとかRange()使用と同一列(1~3行)に1位の記録を示してもカウントされない方法はないかと、本を読んだりネットで探したり膨大な時間を費やしましたが、見当たりませんでした。私見ではDim endRow As Long の宣言をその列の4行目以下からに出来れば?と無知な推測。この点を除けば快適なデータ管理となっております。 A1=TODAY()、C1はIviza一周は1車のみの車名、G1に基本時計(2位のタイム)、I1~J1に文字列「平均時速」、K1にHawaiの2位のタイム G2にIvizaの1位タイム、I2に=ROUND(115.1/(G2*24),3) J2に=ROUND(198.2/(K2*24),3)、K2にHawaiの1位タイム、 A3~L3は日収賞金額・日時・登録名主・登録名1・登録名2・登録名3・距離112.1・空白・Iviza・Hawai・距離198.2 オワフ島・空白、M3~O3セル結合「昇順並替順位 車名 タイム」、 A4~L4 空セル、 A5は=SUM(C5:F5)-SUM(C6:F6)、B5はA1コピペし文字列に変換で10/20、A6~C6は82500$・10/19・25474960$、です。 ボタン1 押しで以下を実行。 Sub tdU2() Dim endRow As Long endRow = Cells(Rows.Count, "J").End(xlUp).Row With Range(Cells(4, "H"), Cells(endRow, "H")) .Formula = "=RANK(I4,I:I,2)" .Value = .Value End With With Range(Cells(4, "L"), Cells(endRow, "L")) .Formula = "=RANK(J4,J:J,2)" .Value = .Value End With Range("K2") = WorksheetFunction.Min(Range(Cells(4, "J"), Cells(endRow, "J"))) Range("G2") = WorksheetFunction.Min(Range(Cells(4, "I"), Cells(endRow, "I"))) Range("K4:K165").Select Selection.Copy Range("N4:N165").Select ActiveSheet.Paste Application.CutCopyMode = False Range("J4:J165").Select 'ActiveWindow.ScrollRow = 1 Selection.Copy Range("O4:O165").Select ActiveSheet.Paste 'Range("L4").Select 'Application.CutCopyMode = False Range("L4:L165").Select 'ActiveWindow.ScrollRow = 1 Selection.Copy Range("M4:M165").Select ActiveSheet.Paste 'Application.CutCopyMode = False Range("M4:O165").Select 'ActiveWindow.ScrollRow = 1 Selection.Sort Key1:=Range("M1"), Order1:=xlAscending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _ :=xlPinYin Range("L4").Select End Sub Private Sub CommandButton1_Click() tdU2 End Sub ボタン2 押しで以下を実行 Sub td() Range("A4:L4").Select Range("K4").Activate Selection.Insert Shift:=xlDown Range("B6").Select Selection.Copy Range("B5").Select Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Application.CutCopyMode = False With Range("A6").Select Selection.AutoFill Destination:=Range("A5:A6"), Type:=xlFillDefault Range("A5:A6").Select Range("A5").Select End With With Range("A1").Select Selection.Copy Range("B5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Range("B5").Select Application.CutCopyMode = False Range("B5").Select End With Range("C5").Select End Sub Private Sub CommandButton2_Click() td End Sub となっています。 D59、E70、F64 以下にはゲームの終了時の賞金があり 登録名主・登録名1・登録名2・登録名3・のどれかを遊んだ時、多分SUMIF()で計算するのでしょうが、各列の一番近い列行(セル)の見つけ方が解らないので、主列のみで遊んでいます。未完了のエベントのある登録名1・登録名2・登録名3 はお休みです。 A5を=+SUM(C5:F5)-SUM(C6:F6)にするのに下からオートフィルしてますが、それに影響があるかどうか不明です。 長文ごめんなさい。ありがとうございました 兎にも角にも、ひたすら、感謝申し上げます。

その他の回答 (3)

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

続けてお邪魔します。 >同タイムは同じ順位がふられ次が欠番になる事。 の件に関して・・・ RANK関数を使用していましたので、同順の場合はそのような結果となります。 ご希望としては同順位はつけたくない!というコトのようですので、 ↓のコードに変更してみてください。 Sub Sample3() Dim i As Long, endRow As Long endRow = Cells(Rows.Count, "G").End(xlUp).Row Range("G2:H2").ClearContents '←G2・H2を消去 '以下同順位の場合は上の行が上位に!(ランク関数は使用しない) With Range(Cells(3, "J"), Cells(endRow, "J")) .Formula = "=COUNTIF(G:G,""<""&G3)+COUNTIF(G$3:G3,G3)" .Value = .Value End With With Range(Cells(3, "K"), Cells(endRow, "K")) .Formula = "=COUNTIF(H:H,""<""&H3)+COUNTIF(H$3:H3,H3)" .Value = .Value End With Range("G2") = WorksheetFunction.Min(Range(Cells(3, "G"), Cells(endRow, "G"))) Range("H2") = WorksheetFunction.Min(Range(Cells(3, "H"), Cells(endRow, "H"))) End Sub ※ 同タイムの場合は上側の行が上位に表示されます。 >さらに、31番迄しか順位付けが無いのに90位などがある。 に関しては判りかねますので、スルーさせてください。m(_ _)m

noname#245250
質問者

お礼

3/14 myページを見てびっくり。お礼してない回答が125件あります。ですって? サーバーが逝かれた? 遅ればせながら、 ご回答、ありがとうございました。

noname#245250
質問者

補足

お邪魔なんてとんでもありません。 感謝のあまり涙ものです。 >スルーさせてください は、回答2のお礼に書きましたが、H列のデータ最下位(H157)と同じG157を空白とせずG列の最下位(G31)のデータをG157にコピペすると解消しました。それまでは順位がK31迄しか表示されませんでした。 また、同お礼に書いた >Range("G2")⇒Range("I2")だとJ K列削除だけでマクロ実行でI2の値が変更されますのでこちらをとります。 ですが、J K列も削除しなくても書き換わる様になって、原因特定不明です。 サンプル3 を頂き、それにしてみたら、何故かK列の順位1位が2個できます。H2の表示セルをI2にしても変わりません。 したがってサンプル2の「同順位表示&次を飛ばし」の方が良い。データ空白行をゼロ表示ではなく#N/A の方が便利な事もあり(確認行為=K列をL列にコピペ並び替え昇順でゼロが邪魔などあり) サンプル2を使います。ネット検索してボタン登録もでき、なんとボタンはセル上表示じゃん。で、最小にしてI列の1行めに置き、便利に使えます。 ありがとうございました。心底より感謝申し上げます。

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

No.1です。 >列選択し書式でセルをユーザー定義のmm:ss.0 を設定して、ダブルをピリオド、シングルをコロンに全置き換しました。 とありますので、データそのものが数値として判断されます。 すなわちデータそのままがRANK関数で使用できますので、操作としてはかなり簡単になりました。 >3行目からがデータとなります 前回は2行目以降にデータがある!という前提のコードでしたので、 もう一度コードを載せてみます。 尚、G2・H2セルの表示形式もユーザー定義から mm:ss.00 としておいてください。 Sub Sample2() Dim endRow As Long endRow = Cells(Rows.Count, "G").End(xlUp).Row With Range(Cells(3, "J"), Cells(endRow, "J")) .Formula = "=RANK(G3,G:G,2)" .Value = .Value End With With Range(Cells(3, "K"), Cells(endRow, "K")) .Formula = "=RANK(H3,H:H,2)" .Value = .Value End With Range("G2") = WorksheetFunction.Min(Range(Cells(3, "G"), Cells(endRow, "G"))) Range("H2") = WorksheetFunction.Min(Range(Cells(3, "H"), Cells(endRow, "H"))) End Sub ※ 最終行をどの列で取得するか迷ったのですが、 とりあえずG列で最終行を取得するようにしています。m(_ _)m

noname#245250
質問者

お礼

出来ました。心よりの感謝です。 初めうまく行った後、2度めのデータ追加で2番手が無くなりました。知識なく更に数年マクロを運用していなかったので、脇道に迷い込み、何度も、使いふるした温存エクセルのコピーを使い試行錯誤。 まず分かったのは同タイムは同じ順位がふられ次が欠番になる事。 さらに、31番迄しか順位付けが無いのに90位などがある。 TDU2と言うレーシングゲームの G列=イビザ島一周タイムトライアル H列=オワフ島一周タイムトライアル なのですが、 イビザ島は低ランクの物で車はSubaru impreza WRX STI A6 のみですから、エクセルに記録を始めたのはずっと後で、G31迄しかデータがありません。そのセルを最下位のG157に移動するとK列の順位も全て表示するようになり解決。 つぎに「2番手」が欠番になる点はH2も見ていてなるのかとも。 で新しいデータ入れの際J K列削除だけでなくG2やH2も削除すれば解決しますが、Range("G2")⇒Range("I2")だとJ K列削除だけでマクロ実行でI2の値が変更されますのでこちらをとります。たぶん構文の何処かを変えれば良いのかも? 現時点でも、たいへん助かっております。 ありがとうございました。 追伸 読者のタメと言うか、補足のコードに欠落がありました。 Sub 和DelUP() Selection.Delete Shift:=xlUp End Sub Sub 和DelLeft() Selection.Delete Shift:=xlToLeft End Sub Sub 和InsRight() Selection.Insert Shift:=xlToRight End Sub Sub 和InsDown() Selection.Insert Shift:=xlDown End Sub これがないと便利なセルの増減はだめかと、、、、、、。 脱線ごめんなさい。

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

こんばんは! >2~5行目迄を行挿入の為の空欄にし(行選択して私登録のショートカットCtrl+Alt+↓キーで挿入) というコトはあらかじめ数式を入れていてもまったく無意味になってしまいますね! そこでVBAになってしまいますが、一例です。 B列のタイムは質問通りの入力方法なのでしょうか? 本来であれば、0:47:17.33 のような入力方法が好ましいのですが・・・ 今回は質問通りの入力となっているとします(分がシングルクォーテーション・秒がダブルクォーテーション) 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim endRow As Long endRow = Cells(Rows.Count, "A").End(xlUp).Row Application.ScreenUpdating = False Range("A:A").Insert With Range(Cells(2, "A"), Cells(endRow, "A")) .Formula = "=(0&"":""&SUBSTITUTE(SUBSTITUTE(C2,CHAR(34),"".""),""'"","":""))*1" .Value = .Value End With With Range(Cells(2, "E"), Cells(endRow, "E")) .Formula = "=RANK(A2,A:A,2)" .Value = .Value End With Range("A:A").Delete Application.ScreenUpdating = True End Sub 'この行まで ※ タイムは質問通り、時間の部分はなくて ○分○秒○○ とします。 ※ データ変更があるたびにマクロを実行する必要があります。m(_ _)m

noname#245250
質問者

お礼

2019/3/14 myページを見てびっくり。お礼してない回答が125件あります。ですって? 遅ればせながら、 ご回答、ありがとうございました。

noname#245250
質問者

補足

ご回答いただき感謝申し上げます。 新しくエクセルを開き実験した所、空白のD2とD3 に1番がふられタイムデータのある行のD列には3番以降が表示されました。空白行を削除すれば正しく表示されます。 ま、上詰めにして、新しいデータを入れる際に1行だけ選択して1行追加と日にちを入れれば済むのですが、、、、。 もう何年もタイピングは練習してないので、アルファベット以外はキーボードを見ないと入れられないのでコロンとピリオドに変えました。列選択し書式でセルをユーザー定義のmm:ss.0 を設定して、ダブルをピリオド、シングルをコロンに全置き換しました。それで甘えなのですが以下の条件で新しく作って頂けると幸いです。 タイム列はGとH、 G列の順位はJ列に表示、 H列の順位はK列に、 更にG2とH2に過去最高タイム表示。 3行目からがデータとなります。 新しいタイムトライアルの記録は3行目を選択し[Ctrl+Alt+↓キー]します。これは10年ほど前ここで教わった「オートオープン」です。ちなみに、、、、 Sub Auto_Open() Application.OnKey "^%{UP}", "和DelUp" Application.OnKey "^%{DOWN}", "和InsDown" Application.OnKey "^%{LEFT}", "和DelLeft" Application.OnKey "^%{RIGHT}", "和InsRight" Application.OnKey "^%{z}", "色消すz" Application.OnKey "^%{H}", "青色H" Application.OnKey "^%{h}", "空色h" End Sub Sub 色消すz() Selection.Interior.ColorIndex = xlNone End Sub Sub 青色H() With Selection.Interior .ColorIndex = 41 .Pattern = xlSolid End With End Sub Sub 空色h() With Selection.Interior .ColorIndex = 8 .Pattern = xlSolid End With End Sub など意味理解なくコピペして便利に使っております。感謝。

関連するQ&A

  • ゲームの記録に順位を付ける事出来ますか?問2

    教えていただいたRANK()関数を含むBVAのデータを 昇順並び替えしたデータです。N列に5台ほどの車名が複数あり O列にタイムが130行ほどあります。 Q1に記入した車名1のタイムをO列から抽出コピーし、Q2以下に表示したいです。 どうすべきかお助け頂ければ幸いです。 R1、S1、・・・・・に車名2,車名3、、、と続きます。それぞれ同様に抽出します。 ゲーム「TDU2」ハワイ一周タイムトライアル198.2kmは57分52秒11が基準タイムで,それより早ければ賞金2万ドル。 脱輪してもペナルティタイムが付かないため、愛用してまして。 Bugatti Veyron 16.4 の440Km/h が最速で、 Koenigsegg CCXR Edition 、Pagani Zonda Cinque と続きますが、運転つたない私はパガニが1・2・5・6位となっています。がそろそろ自己記録の更新に限界を感じ、スピードの遅い車での遊びをはじめましたが、全体での順位が50位とか100位となり、選択車のみの記録が欲しくなりました。 データに無い新しい車名で記録した時、空きのP列に、1列挿入後、Q1に記入するつもりです。

  • Excelで順位をつけたい

     お世話になります。よろしくお願いいたします。    エクセルでの順位の付け方です。  例えば、  国語、数学の2教科のテストの結果で順位をつけるとします。     列A  列B   列C   列D 行1      国語   数学  合計点 行2  A君  40    60   100 行3  B君  50    50   100 行4  C君  60    40   100  上記のような結果の時に普通に「RANK」を使うと、3人全員が「一位」になりますが、  合計点が同じ場合は、国語の点数が良い者から、「一位・二位・三位」になるようにしたいのです。  したがって、C君が「一位」・B君が「二位」・A君が「三位」になるようにするには、 どのようにすればよろしいですか?お教えください。

  • エクセルでの順位づけ

    こんにちは 下のような表で、C列に順位をつけて、順位を出すのではなく、 名前を表示したい場合(5行目から7行目)は、どうしたらいいのか困っています。 この関数ならできるというのがありましたら、教えてください。 よろしくお願いします。     A列   B列   C列     (名前) (点) (順位) 1行目 いちろう  40    2 2行目 じろう   30    3 3行目 はなこ   50    1 5行目     第1位  はなこ 6行目     第2位  いちろう 7行目     第3位  じろう

  • 順位をつける範囲について

    以下のようなデータがあります。   A  B 1 あ 3.0 2 あ 3.0 3 あ 3.0 4 あ 3.0 5 い 1.5 6 い 1.5 7 あ 3.0 8 あ 3.0 9 い 1.5 10 い 1.5 11 う 6.8 12 う 6.8 この「あ」「い」「う」の順位を決定するのに、C列にRANK関数を使って範囲をB1:B12にすると   A  B   C  D 1 あ 3.0  5  2 2 あ 3.0  5  2 3 あ 3.0  5  2 4 あ 3.0  5  2 5 い 1.5  1  1 6 い 1.5  1  1 7 あ 3.0  5  2 8 あ 3.0  5  2 9 い 1.5  1  1 10 い 1.5  1  1 11 う 6.8  11  3 12 う 6.8  11  3 となります。でも実際には順位はD列のようにならないといけないですよね。 A列の「あ」「い」「う」がアトランダムにある場合に(A列のどこに存在しても)D列のような順位を出す方法を教えてください。 よろしくお願いいたします。

  • 同じ順位同士をさらに条件をつけて順位付けしたい

    EXCELのご相談です。 ゲームなどした時に 同じ順位が複数あった場合(例 1位が3人とか4位が2人など)、条件をつけて1位3人→1位、2位、3位  4位→4位、5位 のようにしたいのですが、どのような数式にしたらいいでしょうか。 添付の図でいいますと、順位(C列)1の人が2~4行の3人、順位4の人が5~6行の2人、順位7の人が8~9行の2人いた場合、同じ順位の中でイが多い人が上位、イの数が同じならばロが多い人が、またイ、ロとも数が同じならば ハの数が多い人が上位としたいのです。

  • エクセルでこんな事できるのでしょうか?

    みなさん、こんにちわ! エクセルの計算式もしくはVBAどちらでも構いません。 以下の事が可能になるでしょうか? 運動会に使うデーター資料として A列は、走る子供のゼッケン番号です。 B列には順位。 A・B列は手入力します。 そしてB列の順位を他の表で使う為、C列・D列・E列に1位から3位までの順位を列単位に表示を変更しています。 このC・D・E列を計算式もしくはVBAで自動的にB列から抜き出す事が出来ないでしょうか? 9行目からC・D・E列の数字が変わっているのは1回目の競争と2回目の競争の為です。 また、運動会ですので毎回走る子供の人数が違います。    A B C D E 1   3 1 3 4 8 2   4 2 3 4 8 3   8 3 3 4 8 4   2 4 3 4 8 5   1 5 3 4 8 6   5 6 3 4 8 7   7 7 3 4 8 8   6 8 3 4 8 9   6 1 6 3 7 10   3 2 6 3 7 11   7 3 6 3 7 12   4 4 6 3 7 13  1 5 6 3 7 14  2 6 6 3 7 15  5 7 6 3 7

  • EXELでセルに入力した年月日時刻を記録する方法

    こんにちは。教えてください。電話・FAXの一覧表を作成するのですが,しばしば変更になるため,そこに入力されている番号が,いつ入力されたものか(いつの時点での情報なのか)が分かるように,その入力年月日時刻を表示したいです。下記のQ&Aをみて,その回答通りのことはできるのですが,自分が作りたい表に置き換えた場合,どこをどういじればよいのか分かりません。ご教示いただけましたら幸いです。 私が作りたい表は,B列に会社名,C列に部署名,D列に担当者名,E列に電話番号,F列にFAX番号を入力する形式で,2行目に項目欄を設け,3行目から本文になります(行数はどんどん増えていきます)。で,B列を変更した場合には,同じ行のG列にその変更年月日時刻を,C列を変更した場合には同じ行のH列にその変更年月日時刻を,D列を変更した場合には同じ行のI列にその変更年月日時刻を,E列を変更した場合には同じ行のJ列にその変更年月日時刻を,F列を変更した場合には同じ行のK列にその変更年月日時刻を,自動的に表示するようにしたいです。 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1219065417

  • エクセル関数の順位つけで教えてください

    順位つけで10行全部に関数を入れておき AとBに時間を入れた場合に、入れたところだけD列に 1から順位がつくようにする関数を 教えてください。

  • 順位付け

       A  B  C  D  E 1  A  6  5  2  3  2  B  3  4  1  1 3  C  9  5  3  5 4  D  6  4  2  1 5  D  0  4  0  -4 A列、チ-ム名 B列、勝点 C列試合数 D列、勝数 E列、得失点差 このようなシ-トがある場合、別のセルに1位~5位までの順位付けする関数を教えてください。 尚、勝点が同点場合は得失点差を考慮します。

  • EXCEL2007でグループ別の順位を昇順で

    こんばんは 下記のD列の順位を関数で計算する方法を教えてください。 C列の点数をもとにA列のグループ別の順位を昇順でつけたいのです。 宜しくお願い致します。 Aグループ  B氏名  C点数 D順位 1        あ    10    1 1        い    20    2 1         う    30    3 1        え    40    4 1        お    50    5 2        か    50    4 2        き    40    3 2        く     30    2 2        え    20    1 2        お    80    5 3        え    20    2 3        い    90    5 3        う    10     1 3        あ    50    3 3        お    60    4

専門家に質問してみよう