1

一連の時間を見て、それぞれをベンチマーク時間と比較し、比較した各時間の横にメモを生成するマクロを作成しようとしています。マクロを実行すると、範囲内の最初のセルに対してこれが行われますが、残りのセルに対しては行われません。

「ActivityData」ワークシートのセル C8 がベンチマーク時間です。比較する時間は、「SIS」ワークシートのセル F12 から始まり、数が異なります。

コード全体は次のとおりです。

Sub TimeCalc()

Dim wb As Workbook
Dim SIS As Worksheet
Dim Act As Worksheet

Set wb = ActiveWorkbook
Set SIS = wb.Worksheets("SIS")
Set Act = wb.Worksheets("ActivityData")

'Navigate to start times
wb.Worksheets("SIS").Select
Range("f12").Select
SIS.Range(Selection, Selection.End(xlDown)).Select

'Compare start times
For Each rng In Selection
If Act.Range("C8").Value < rng.Value Then
    ActiveCell.Offset(0, -1).Range("A1").Value = "Missed " & Format(Act.Range("c8").Value, "Medium time") & " - " & Format((rng.Value - 0.000694444), "Medium Time")
    Else
    End If
    On Error Resume Next
    Next rng

End Sub

ご協力いただきありがとうございます!

4

2 に答える 2

1

調べているデータの左側の列に結果を配置するとします。

Option Explicit

Sub TimeCalc()

    Dim wb As Workbook
    Dim SIS As Worksheet
    Dim Act As Worksheet
    Dim myBaseLineRng As Range
    Dim compareRng As Range
    Dim Rng As Range

    On Error GoTo 0

    Set wb = ActiveWorkbook
    Set SIS = wb.Worksheets("SIS")
    Set Act = wb.Worksheets("ActivityData")
    Set myBaseLineRng = Act.Range("C8")
    Set compareRng = SIS.Range(SIS.Range("F12"), SIS.Range("F12").End(xlDown))

    'Compare start times
    For Each Rng In compareRng.Cells
        If myBaseLineRng.Value < Rng.Value Then
            Rng.Offset(0, -1).Value = "Missed " & Format(myBaseLineRng.Value, "Medium time") & " - " & Format((Rng.Value - 0.000694444), "Medium Time")
        End If
    Next Rng

End Sub
于 2013-04-03T15:34:36.303 に答える
0

If ステートメントに示されているように、ベンチマーク リストの値をアクティビティ リストの最初の値と比較しているだけです。私があなたの質問を正しく理解しているかどうか、アクティビティリストをループして各行を確認する必要があります

つまり、アクティビティ リストをループします。アクティビティ リストの各値について、ベンチマーク時間をループして、アクティビティ リストの次の値と照合します。

私があなたの質問を誤解していない限り。

于 2013-04-03T15:29:43.527 に答える