2012-12-16 3 views
0

Следующий код используется для расчета продолжительности между двумя датами, например «13.11.2012 11:21:41 AM» и «14.11.2012 2:32:59 PM ". Функция производит правильный вывод, в данном случае: 1:03:11 (в формате dd: hh: mm, поэтому 1 день, 3 часа и 11 минут). После вычисления сценарий хранит это значение в ячейке, которая до сих пор идеальна, и именно тот формат, который я хочу. После этого другой скрипт запускает и перемещает эти ячейки в зависимости от потребностей и некоторой логики в скрипте и динамически сохраняет его в требуемой ячейке. Проблема, с которой я сталкиваюсь, заключается в том, что время добавляет значение «AM» или «PM», что неверно, поскольку это очень специфическая (и FORMATTED) DURATION, а НЕ фактическое время суток, которое Excel кажется, рассматривается как значение TIME.Формат даты и времени в excel с использованием VBScript

Вот код, используемый для измерения длительностей:

Function TimeSpan(dt1,dt2) 
Dim dtTemp 

objExcel1.Application.ScreenUpdating = False 
    If (IsDate(dt1) And IsDate(dt2)) = False Then 
     TimeSpan = "00:00:00" 
     Exit Function 
    End If 

    If dt2 < dt1 Then 
     dtTemp = dt2 
     dt2 = dt1 
     dt1 = dt2 
    End If 
      TimeSpan = objExcel1.Application.WorksheetFunction.Text((dt2 - dt1), "dd:hh:mm")'"dd:hh:mm:ss" 

objExcel1.Application.ScreenUpdating = False 
End 
+1

Это выглядит очень хорошо знакомым [post] (http://stackoverflow.com/questions/13837023/date-value-subtraction-producing-wrong-error);) ** Так просто скажите нам, что делает ваш листок над всеми. ** Поскольку у вас есть много других скриптов, запускающих и завинчивающих ваш лист. Программа должна быть совместимой и иметь правильный поток данных. Пожалуйста, поделитесь с нами тем, что вы пытаетесь сделать здесь, а не кусочками здесь и там. :) – bonCodigo

+0

См., Когда вышеприведенная функция вычисляет продолжительность времени, они идеальны. Но когда я перемещал значения ячейки справа налево, там пустое место, это форматирование данных терялось. это проблема. –

+0

** Если пустое место –

ответ

0

Посмотрите в FormatDateTime() функции в Excel. Это может помочь вам сохранить только то, что вы намерены использовать в ячейках. Во-вторых, когда я работал с Excel, делая много форматирования даты, я убедился в том, что в ячейках содержится информация FORMAT для типа данных, которые, как я полагал, будет помещен в ячейку. Это может повлиять на вас. Мне кажется, что Excel обрабатывает вашу ценность как значение TIME, возможно, в соответствии с правилом форматирования ячейки «Общее». Установите свои ячейки, в которые вы помещаете эти данные, чтобы использовать, возможно, конкретный формат «STRING». Таким образом, Excel не будет делать каких-либо предположений о ваших данных, а затем вы можете проанализировать его в любом случае, как вы считаете нужным.

Смежные вопросы