Как извлечь разницу в минутах между двумя datetime vba - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть пользовательская форма, которая автоматически генерирует текущую дату и время и помещает ее в ячейку (конец пакета).Затем пользовательская форма снова используется снова, и она будет повторять этот шаг, но поместит ее в другую ячейку (начало новой партии).

Я хочу рассчитать разницу во времени между двумя датами в минутах.Код, который я использую сейчас, дает мне странные отрицательные ответы по какой-то причине, когда я вычитаю раннюю дату и более позднюю дату, поэтому где-то должна быть ошибка.(Эти даты могут быть или не быть в один и тот же день из-за начальных и конечных партий после полуночи).

Когда я просто пытаюсь вычесть два (без кода), просто используя формулу ячейки, я получаю неправильное значение 0,05.

enter image description here

Кто-нибудь знает, как я могу в Excel правильно распознать эти даты и вычесть их, чтобы сгенерировать разницу в минутах?

If opt1.Value = True And Range("U40") = "" Then
    Range("U40") = Format(txt1, "dd-mmm-yyyy hh:mm")
    UserForm3.Hide
ElseIf opt1.Value = True And Range("U41") = "" Then
    Range("U41") = Format(txt1, "dd-mmm-yyyy hh:mm")
    UserForm3.Hide
ElseIf opt1.Value = True And Range("U42") = "" Then
    Range("U42") = Format(txt1, "dd-mmm-yyyy hh:mm")
    UserForm3.Hide
ElseIf opt2.Value = True And Range("W40") = "" Then
    Range("W40") = Format(txt1, "dd-mmm-yyyy hh:mm")
    UserForm3.Hide
ElseIf opt2.Value = True And Range("W41") = "" Then
    Range("W41") = Format(txt1, "dd-mmm-yyyy hh:mm")
    UserForm3.Hide
ElseIf opt2.Value = True And Range("W42") = "" Then
    Range("W42") = Format(txt1, "dd-mmm-yyyy hh:mm")
    UserForm3.Hide
End If

If Range("U42") > "" And Range("W42") > "" Then
    Range("Y42") = Range("W42") - Range("U42")
ElseIf Range("U41") > "" And Range("W41") > "" Then
    Range("Y41") = Range("W41") - Range("U41")
ElseIf Range("U40") > "" And Range("W40") > "" Then
    Range("Y40") = Range("W40") - Range("U40")
End If

Ответы [ 3 ]

0 голосов
/ 27 сентября 2018

Всегда вычитайте меньшее из большего.

С более поздней датой / временем в A1 и более ранним в B1 , в C1 введите:

=24*60*(A1-B1)

, чтобы получить разницу в минутах :

enter image description here

Использование VBA:

Sub datetime()
    Dim dt1 As Date, dt2 As Date
    dt1 = Range("A1").Value
    dt2 = Range("B1").Value
    MsgBox Int(24 * 60 * (dt1 - dt2))
End Sub

enter image description here

0 голосов
/ 27 сентября 2018

Range ("Y42") = DateDiff ("n", Range ("U42"), Range ("W42"))

0 голосов
/ 27 сентября 2018

Время в Excel хранится в виде доли дня.Вычитание дает вам десятичные дни, вам нужно умножить, чтобы получить минуты:

(Time B - Time A) * 60 Minutes in an hour * 24 Hours in a day

enter image description here

=(B1-A1)*60*24

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...