Вычитание минут из отметки времени в msexcel - PullRequest
0 голосов
/ 13 ноября 2018

Я извлекаю временную метку из ячейки в формате, как вторник, 06 ноября, 07:33:00 UTC 2018. Теперь, используя код vbscript или код vba, я хочу вычесть несколько минут из указанной выше метки времени.Как мне этого добиться?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Не заходя в VBA, вы можете отделить отметку времени от даты, затем поработать с отметкой времени и соответствующим образом скорректировать дату.

Предполагая, что ваши даты находятся в столбце A, и что отметка времени всегда занимаетта же структура, начиная с номера строки 2

Итак, сначала вы создаете столбец, в котором есть только отметка времени, то есть столбец B:

=MID(A2,FIND("UTC",A2)-9,8)

07: 33:00

Сначала находит позицию «UTC» в строке, затем извлекает 8 символов, начиная с 9 символов влево (с учетом пробела между временем и «UTC»).

Уже там вы можете работать с минутами / часами / секундами.

Часы:

=NUMBERVALUE(LEFT(B2,2))

07

Минуты:

=NUMBERVALUE(Mid(B2,4,2))

33

Секунды:

=NUMBERVALUE(Right(B2,2))

00

Вы также можете извлечь датучасть метки времени с использованием той же логики.Столбец C:

=MID(A2,FIND(B2,A2)-11,10)

Вт 6 ноября

Наконец, вы также можете объединить все это в дату Excel и выполнять операции непосредственно с полученным числом (Этогарантирует, что вы получите новую действительную дату, которая учитывает увеличивающиеся / уменьшающиеся часы / дни / месяцы / годы, а также автоматически учитывает високосные годы.)

Окончательная дата, включая отметку времени, столбец D:

=DATEVALUE(MID(A2,FIND(B2,A2)-3,2)&"-"&MID(A2,FIND(B2,A2)-7,3)&"-"&RIGHT(A2,4))+NUMBERVALUE(LEFT(B2,2))/24+NUMBERVALUE(MID(B2,4,2))/(24*60)+NUMBERVALUE(RIGHT(B2,2))/(24*60*60)

43410.3145833333

На этом последнем числе вы можете просто увеличить / уменьшить количество минут, добавив его непосредственно к нему.Единица этого числа - «дни», поэтому одна минута равна 1 / (24 * 60), а один час - 1/24.Пример удаления 33 минут:

=D2 - 33/(24*60)

43410.2916666667

Изменение форматирования на [дд / мм / гггг чч: мм] приведет к:

06/11/2018 07: 00: 00

0 голосов
/ 13 ноября 2018
split(split("Tue Nov 06 07:33:00 UTC 2018",":")(1),":")(0)

Даст вам минуты самостоятельно.Вы можете назначить разбиения на массивы, а затем присоединиться с правильными минутами, используя `join

Что-то вроде этого

Public Function addToTimeStamp(strTimeStamp As String, lngMinutes As Long) As String

Dim a() As String

a = Split(strTimeStamp, " ")
a(3) = DateAdd("n", lngMinutes, a(3))

addToTimeStamp = Join(a, " ")

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