Как рассчитать разницу во времени, используя VBA? - PullRequest
0 голосов
/ 08 апреля 2019

Я новичок в VBA.Мне нужно решение моей проблемы только в VBA.Спасибо.

Ниже приведены задачи, которые мне необходимо выполнить

  1. Выберите «ID» и «Course» из таблицы.В таблице ниже я упомянул несколько идентификаторов и курсов, однако у моего проекта несколько идентификаторов и курсов.Я не могу продолжать вводить идентификатор и название курса для всех случаев.Есть ли умный способ сделать это?

  2. Для определенного идентификатора, Определенного курса и определенной даты мне нужно рассчитать разницу во времени между двумя строками, как указано в таблице ниже для конкретного «события».Разница во времени в первых двух строках показывает время, затраченное на «Чтение», разница между строками 2 и 3 - время, затраченное на «Письмо», разница между строками 3 и 4 - время, затраченное на «Запись» и т. Д..

Любая помощь будет высоко оценена. Формат данных указан по ссылке ниже

enter image description here

1 Ответ

0 голосов
/ 08 апреля 2019

Вы можете изменить код и попробовать:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...