簡體   English   中英

如何使用VBA計算時差?

[英]How to calculate the time difference using VBA?

我是 VBA 的初學者。 我只需要在 VBA 中解決我的問題。 謝謝。

以下是我需要完成的任務

  1. 從表中選擇一個“ID”和一個“課程”。 在下表中,我提到了幾個 ID 和課程,但是我的項目有多個 ID 和課程。 我不能在所有情況下都輸入 ID 和課程名稱。 有沒有聰明的方法來做到這一點?

  2. 對於特定的 ID、特定的課程和特定的日期,我需要計算下表中針對特定“事件”給出的兩行之間的時間差。 前兩行的時間差給出了“閱讀”所花費的時間,第 2 行和第 3 行之間的時間差給出了“寫作”所花費的時間,第 3 行和第 4 行之間的差異給出了“寫作”所花費的時間,依此類推.

任何幫助將不勝感激。 數據格式在下面的鏈接中

在此處輸入圖片說明

您可以修改代碼並嘗試:

Option Explicit

Sub test()

    Dim strID As String, strCourse As String, strEvent As String
    Dim DateTime1 As Date, DateTime2 As Date
    Dim LastRow As Long, i As Long, y As Long

    With ThisWorkbook.Worksheets("Sheet1")

        LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

        For i = 2 To LastRow

            strID = .Range("A" & i).Value
            strCourse = .Range("B" & i).Value
            DateTime1 = CDate(.Range("C" & i).Value) & " " & CDate(.Range("D" & i).Value)
            strEvent = .Range("E" & i).Value

            For y = 2 To LastRow

                If y <> i Then

                    If .Range("A" & y).Value = strID And .Range("B" & y).Value = strCourse And .Range("E" & y).Value = strEvent And .Range("F" & i).Value = "" And .Range("F" & y).Value = "" Then
                        DateTime2 = CDate(.Range("C" & y).Value) & " " & CDate(.Range("D" & y).Value)
                         .Range("F" & i).Value = Abs(DateDiff("h", DateTime2, DateTime1))
                    End If

                End If

            Next y

        Next i

    End With

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM