K列・・・AB列で予想されている周回数の小数点以下を切り捨てた値

=ROUNDDOWN(AB2-3,0)

配信画面に表示する周回数はこれを使用したほうが見栄えがいいので作った列です。

L列・・・現在のトータル周回数(手入力)

さて、ズボラな私は楽をするためにとことんシステムを練ってきましたが・・・

前回の失敗を考察してわかったのですが、「周回数は手入力が必須」なんですよね。

これも後述しますが、このシステムでは現在マシンがコースの何%を走り終えたかが大凡推測できます。

その推測によって「前に見たときから(おそらく)◯周進んだ」と仮説は立てられるのですが、それが実際合っているかどうかは人間が確認して、入力してあげないといけないわけです。

これを入れなければ、一向に集計上の周回数が増えていきません。

集計作業において、「入力」が結構シンドいのに・・・。

というわけで、「ユーザーフォーム」を作って楽をすることにしました。

楽するためなら手間を惜しみません。

「開発」→「Visual Basic」→「挿入」→「ユーザーフォーム」で自由にデザインできます。

ある程度形を作ったら、コードを作成します。

今回、上の周回数を入れるボックスを「TextBox2」、下のラップタイムを入れるボックスを「TextBox1m」、OKボタンを「CommandButton1」と名付けてます。

Private Sub CommandButton1_Click()
    
    With Worksheets("集計用")
        
        ActiveCell.Select
        ActiveCell = Format(TextBox1m, "0:00.0")
        ActiveCell.Offset(0, -12).Value = TextBox2
        
        
    End With
    
    Unload UserForm1
    ActiveCell.Offset(1, 0).Select
    
End Sub

私も素人なので解説しろと言われると難しいんですが、

Private Sub CommandButton1_Click()

’CommandButton1(OKボタン)を押すと
    
    With Worksheets("集計用")
    ’ ワークシート(集計用という名前)の   
        ActiveCell.Select ’今選択されているセルに
        ActiveCell = Format(TextBox1m, "0:00.0") ’TextBox1mに入力した数字を”0:00.0”の形で
        ActiveCell.Offset(0, -12).Value = TextBox2 ’選択されているセルの12左のセルにTextBox2を
        
        
    End With 
’入力して終了
    
    Unload UserForm1 ’もう一度このフォームを出して
    ActiveCell.Offset(1, 0).Select ’今選択しているセルの1個下を選択
    
End Sub ’終わり

って感じでしょうか。

ちなみに、今選択されているセルというのがX列であるという前提で、その12左というのがこのL列なわけです。

細かくはまたX列のときに話しますが、これにてX列を選ぶと自動的に今のフォームが表示され、「周回数」→「Enter」→「ラップタイム(1分22秒3なら1223)」→「Enter」→次の車のフォーム・・・という具合に、究極に楽して周回数とラップタイムを入力できるようになりました。これ超オススメ。

というわけで、手入力ではあるんですがこうすると楽ですよ、という紹介でした。

この列の説明自体は見出しの通りで、それ以上何もありません。

M~W列:提出されたスクショの周回数記録&合計

N~W列に各スティントで提出された周回数を記録し、M列に合計を出しているだけです。

集計に利用しているというよりは、単純な確認用です。

一応10スティントまで対応できるように長めに取っていますが、邪魔なので折りたたんでます。

X列:その車を見た瞬間の、その車のラップタイム

X列には、その車を見た瞬間のラップタイムを入力していきます。

上に用意した画像の場合、「7秒4」と入力すればいいだけです。

ただ、入力時に楽をするためにここでも沢山VBAを利用しています。

画像の1つ目のコードはまた別なので後述します。2つ目から。

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim r As Range
  For Each r In Target
    If r.Column = 24 Then
       r.Offset(0, 10).Value = Format(Now, "hh:mm:ss")
    End If
  Next r
End Sub

これは、24列目(=X列)が変更されたら、10右の列(=AH列)に入力された時刻を記録するコード。

これが超大事。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 24 Then
UserForm1.Show
Application.EnableEvents = False
Range("X1").Select
Application.EnableEvents = True
End If

End Sub

3つ目のコードは、24列目(X列)が選択されたら「UserForm1」を出してね、って記述。

後半はフォームを消すとX1に戻るという部分なんですが、今ひとつ理解できてません。

UserForm1.ShowからEnd Subに飛んでもいい気がします。

とにかく、このVBAがあるおかげで格段に集計が楽になってます。超オススメ。

Y列:レース経過時間(使ってない)

以下Y2セルでの例。

=AH2-$AC$1

先程AH列にタイムを入力した時刻を記録させました。

そして、AC1セルにレーススタート時の時刻を入力しておきます。

(先程の画像にあった1つ目のコードはこの時刻を入力するためのコードです。正直手入力でもなんでもいいです)

したがって、「タイム入力時刻」ー「レーススタート時刻」でおおよそのレース経過時間を出しています。

・・・が、今現在これは特に使用していません。消すとVBAとかがズレちゃうので残してあるだけです。

Z列:各車の1ラップ基準タイム

ベストタイムでも平均タイムでもなんでも。各チームそれぞれの平均タイムに近づけることでより正確になります。

また長くなってきたので次ページに。

カテゴリー: Driver's Blog