Excel вопрос: мне нужно формула даты и времени для преобразования между часовыми поясами - PullRequest
1 голос
/ 07 апреля 2010

Я пытаюсь найти способ рассчитать продолжительность в днях между моим, часовым поясом (Центральный) и (Тихий; Гора; Восточный) Просто не знаю с чего начать. Мои критерии будут следующими:

Ячейка C5: C100 будет метками времени в этом формате: 18.03.2010 23:45, но для разных дат и времени. Ячейка D5: D100 будет соответствующим часовым поясом в текстовой форме: Pacific; Гора; Восточный; Центральный.

В ячейке F5 должна быть указана продолжительность в днях.

Просто не знаю, как написать формулу, чтобы дать мне то, что я ищу. Я ценю любую помощь заранее. Спасибо

Ответы [ 2 ]

1 голос
/ 07 апреля 2010

С Часовые пояса и летнее время

Ни VBA, ни VB6 не предоставляют нативные функции для работы со временем Зоны, среднее время по Гринвичу (GMT, также UTC), или летнее время. Для работы с этими значениями необходимо использовать приложение Windows Программный интерфейс (API) функции. Эта страница описывает эти API-функции и как их использовать в ваш код VBA.

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

Самый простой способ - это, вероятно, вложенная формула IF:

=IF(D22="Pacific",(1/24*2),IF(D22="Mountain",(1/24),IF(D22="Eastern",-(1/24),0)))

Или используя функцию LOOKUP, чтобы вернуть то же самое:

=(C5+(1/24*LOOKUP(D5,{"Central","Eastern","Mountain","Pacific"},{-2,-3,-1,0})))-C5

В качестве альтернативы, вы можете создать UDF, который берет местную дату / время и вычисляет тихоокеанскую дату / время из текстового представления часового пояса:

Function TimeDifference(LocalTime As Range, TimeZone As Range) As Date
    Application.Volatile
    Dim TimeOffset As Long

    Select Case TimeZone
        Case "Mountain"
            TimeOffset = -1
        Case "Central"
            TimeOffset = -2
        Case "Eastern"
            TimeOffset = -3
        Case Else
            TimeOffset = 0
    End Select
    TimeDifference = (1 / 24 * TimeOffset)
End Function

Вы бы назвали это из столбца F следующим образом:

=TIMEDIFFERENCE(C5,D5)

...