エクセル2002でサーキットでの耐久レース結果の集計、順位づけをリアルタイムで実行するにはどうすれば良いでしょう?
サンプル
通過順カウントゼッケン
1 35
2 64
3 89
4 48
5 85
6 8
7 30
8 71
9 2
10 21
11 10
12 64
13 35
14 89
15 85
16 48
17 8
18 30
19 71
20 2
21 21
22 10
23 64
24 35
25 89
26 85
27 48
28 8
29 30
30 2
31 71
32 10
33 21
34 64
35 35
36 89
37 48
38 8
39 85
40 30
41 2
42 10
43 21
44 71
45 64
46 35
47 89
48 8
49 85
50 48
51 30
52 2
53 10
54 21
55 71
56 64
57 35
58 89
59 8
60 48
61 85
62 30
63 2
64 10
65 21
66 64
67 71
68 35
69 89
70 8
71 48
72 85
73 30
74 2
75 10
76 64
77 21
78 71
79 35
80 89
81 8
82 48
83 85
84 30
85 64
86 2
87 10
88 21
89 71
90 35
91 89
92 8
93 48
94 64
95 30
96 85
97 2
98 10
99 21
100 35
101 71
102 89
103 8
104 48
105 64
106 30
107 85
108 2
109 10
110 21
欲しい結果
順位 ゼッケン 週回数
1 64 11
2 35 10
3 89 10
4 8 10
5 48 10
6 30 10
7 85 10
8 2 10
9 10 10
10 21 10
11 71 9
こんな感じです。
通過順のゼッケンを入力するたびに自動計算されその時点での周回数と順位が出るようにしたいのです。
よろしくお願いします。
No.6ベストアンサー
- 回答日時:
修正したいのね
#4と置き換えて
条件は同じ
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("b:b")) Is Nothing Then Exit Sub
If Not IsNumeric(Target.Value) Then Exit Sub
Dim i As Long
Dim ii As Long
Range("F2", Range("H65536").End(xlUp)).ClearContents
For i = 2 To Range("b65536").End(xlUp).Row
For ii = 2 To Range("H65536").End(xlUp).Row + 1
If Cells(ii, 6).Value = Cells(i, 2).Value Or Cells(ii, 6).Value = "" Then
Cells(ii, 6).Value = Cells(i, 2).Value
Cells(ii, 7).Value = Cells(ii, 7).Value + 1
Cells(ii, 8).Value = Cells(i, 1).Value
Exit For
End If
Next ii
Next i
Range("F2", Range("H65536").End(xlUp)).Sort Key1:=Range("G2"), Order1:=xlDescending, Key2:=Range("H2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin
End Sub
No.7
- 回答日時:
No2です。
まだ、空いていたのでおまけです。A B C D
スタート時間
ゼッケン タイム 周回数
と準備しておいて、C1にレースの開始時刻を入れておきます。
シートのコードには
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
GYOU = Range("A65536").End(xlUp).Row + 1
Cells(GYOU, 1).Value = Range("A1").Value
Cells(GYOU, 2).Value = Time - Range("C1").Value
Cells(GYOU, 3).Formula = "=COUNTIF(A3:A" & GYOU & ", A" & GYOU & ")"
Cells(GYOU, 4).Formula = "=IF(COUNTIF(A" & (GYOU + 1) & ":A$65536,A" & GYOU & ")=0,C" & GYOU & "-B" & GYOU & ","""")"
Range("A1").Activate
End If
End Sub
をコピィしてみてください。
通過時に、A1セルにゼッケン番号をいれると、上から順にゼッケン番号とラップが入ります。
回数と順位を計算するC、D列は関数が入りますので、修正の場合は A列とB列を訂正してください。
順位を出す式は、空いている列に
=INDEX(A:A,MATCH(LARGE(D:D,ROW(A1)),D:D,FALSE))
と入れて下へコピィしておいてください。
ゼッケンごとのラップタイムがでるので
オートフィルターでゼッケンごとのタイムとか周回ごとの順位とかもすぐに表示できると思います。
ありがとうございます。しかし、データの集計に時刻の情報はないのです。
通過順序のみで判断しています。もちろんダミーの時刻を入れれば済む事なのですが知らない人がみたら紛らわしくなると思います。
それと、やはりマクロを使うと敷居が高くなり、後々の改良・修正の事や他の人が使うかもしれない事を考えると出来るだけ簡単なマクロかワークシート関数だけで処理出来る方が都合が良いのでもっとマクロを勉強してからチャレンジしてみたいと思います。
結局、通過順と周回数に重み付けしたものを判断基準にしてシートを完成させました。
みなさまのおかげで今回はワークシート関数だけで動くものを作れましたので終わりにしたいと思います。
No.5
- 回答日時:
No.1です。
すみません。E列の式が間違っていました。次のようにしてください。E2の式:=RANK(D2,D:D)
この回答への補足
さっそくありがとうございます。
実は私もここで困っている訳ですが
このポイントの使い方をすると順位が正しく出ません。
1.周回が多い方が順位が上
2.同じ周回ならポイントが少ない方が順位が上(通過順が早い)
なんです
それがうまくクリア出来れば問題なく出来るのですが・・・
総合ポイント=周回数*10000-ポイント(通過順位の加算)
という形で解決させました。
余りスマートとは言えないですが今は時間がないのでこれでやりたいと思います。
ありがとうございました。
No.4
- 回答日時:
マクロで良いなら
詳細が無いので、勝手に決めた
入力側
A列:通過順カウント(必ず連番で、少し多めに入れといて)
B列:ゼッケン(半角数字で)
結果側
E列:順位
F列:ゼッケン
G列:週回数
H列:通過順
A列、E列に連番を入力して、B列にゼッケンを入力するだけ
'対象ワークシートモジュールへ
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("b:b")) Is Nothing Then Exit Sub
If Not IsNumeric(Target.Value) Then Exit Sub
Dim i As Long
i = 0
Do
i = i + 1
If Cells(i, 6).Value = Target.Value Or Cells(i, 6).Value = "" Then
Cells(i, 6).Value = Target.Value
Cells(i, 7).Value = Cells(i, 7).Value + 1
Cells(i, 8).Value = Target.Offset(0, -1).Value
Exit Do
End If
Loop
Range("F2", Range("H65536").End(xlUp)).Sort Key1:=Range("G2"), Order1:=xlDescending, Key2:=Range("H2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, SortMethod:=xlPinYin
End Sub
アレンジはご自分で
マクロが分らなければ無視してください
No.3
- 回答日時:
No2です。
A B C D E
ゼッケン 通過時刻 回数 作業列 順位 ゼッケン 回数
1 1
2 2
3 3
として
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Then
Target.Offset(0, 1).Value = Time
Target.Offset(0, 2).Value = Target.Offset(0, 2).Value + 1
End If
End Sub
D列に =C2ーB2 下コピィにしておけば
手修正も可能では。
回数が同じ場合の順位を確定するためにはどうして時間の情報が必要ですす。
No.2
- 回答日時:
順位を決めるのに通過時間が必要ではないでしょうか?仮に
A B C D E
ゼッケン 作業列 順位 ゼッケン 回数
1 1
2 2
3 3
4
5
6
7
8
9
・・・と準備しておきます。
シートの名前のタブを右クリックして、コードの表示をクリック VBエディターを開きます。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 1 Then
Target.Offset(0, 1).Value = Int(Target.Offset(0, 1).Value) + 2 - Time
End If
End Sub
をコピィして閉じます。
通過したときに、A列のゼッケン番号をダブルクリックすると、B列に妙な日付や時刻が入ります。
B列は、クリックした回数引く時間ですので、この値が大きいほうが順位で上になります。
ここの作業にはマクロを使用しますが、入力の作業を簡単に出来ます。
C列には、表示したい順位を数値で入れておきます。
D列には、=INDEX(A:A,MATCH(LARGE(B:B,C2),B:B,FALSE))
E列には、=INT(INDEX(B:B,MATCH(LARGE(B:B,C2),B:B,FALSE)))
といれて下へコピイしておけば、順位に応じたゼッケン番号とそのゼッケンの回数が表示されると思います。
ありがとうございます。こんなやり方があるとは知りませんでした。
シンプルで結構感動ものの回答です。
概ね、やりたい事に沿ってはいるのですが、入力ミスの修正方法や操作ミスを防ぐ手段を講じないといけないなど私にはハードルが高すぎて満足なものを完成出来そうにありません。
もう少し理解しやすいやり方を探してみたいと思います。
No.1
- 回答日時:
サンプルがA列、B列にあるとして、次のように入力してください。
D E F G
ポイント 順位 ゼッケン 周回数
=SUMIF(B:B,F2,A:A) =SUMIF(B:B,F2,A:A) 2 =COUNTIF(B:B,F2)
8
10
(数式は下へコピー。ゼッケンは2~89まで)
I J K
順位 ゼッケン 周回数
1 =VLOOKUP(I2,E:G,2,FALSE) =VLOOKUP(I2,E:G,3,FALSE)
2
3
(順位は1~11まで。数式は下へコピー)
この回答への補足
ありがとうございます。
コピペしてやってみてはいるのですがうまくいきません。
何か見落としてでもあるのでしょうか?引き続きやってみます。
お礼ではないのですが・・・
E列に順位が出ればその他は期待通りになるようです。
しかし、E列はD列と同じ数値が表示され順位が出ません。
何か間違ってますでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 統計学 テストの順位についてです 今回のテストの順位を知りたいのですが、できますでしょうか?今回は僕の学年は 4 2022/11/30 19:15
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
- 経済 日本の世界競争力が34位ですね。 ヨーロッパが出した統計なのでヨーロッパが有利にされてるとは思うんで 3 2022/07/25 10:43
- Excel(エクセル) Countifよりも早く重複数をカウントする方法ありますか? 18 2022/07/04 13:39
- Excel(エクセル) RANK.EQとCOUNTIFSの組み合わせで同ポイントの場合、違う条件を加えて順位を付けたい。 1 2022/08/30 19:49
- 中学校 親って何なんですか? 6 2022/08/02 21:44
- 仕事術・業務効率化 作業をする時に、作業順や優先順位をちゃんと付けれるようになりたいです。 自分は作業したりする時、頭の 3 2023/07/11 03:15
- 避妊 排卵日計算 1 2022/11/05 22:26
- 株式市場・株価 【配当利回りランキングが各サイトで上位の順番が違うのはなぜですか?】 https://s.minka 3 2022/06/26 09:04
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数学 Tan(θ)-1/Cos(θ)について...
-
スマートな関数を教えて下さい。
-
Excel ウインドウ枠の固定をす...
-
EXACT関数とIF関数の組み合わせ...
-
4つのパターンを表示するEXACT...
-
関数を教えて下さい。
-
Excel:一部のフォントでセルの...
-
エクセルで指定した日付、店舗...
-
エクセルでセルに「氏名を入力...
-
Excel 2019 のピボットテーブル...
-
スプレッドシートの関数VLOOKUP...
-
エクセルで日付の入ったセルの...
-
Excelファイルの「数式」タブ→...
-
excelの不要な行の削除ができな...
-
Excelのif関数で文字が見えなく...
-
各ページの1番上の表示について
-
エクセル関数に詳しい方、教え...
-
INDIRECTを使わず excelで複数...
-
Excel 2019 は、SPILL機能があ...
-
UNIQUE関数が使えないバージョ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報