2014-02-08 4 views
1

У меня есть электронная таблица Excel (2010), которая предоставляется мне в основном текстовым дампом.Преобразование текста с длинными датами/времени

Cell - J8 имеет следующую информацию на TUE 4 февраля 00:08:06 EST 2014
Cell - L8 имеет следующую информацию на TUE 4 февраля 00:14:54 EST 2014

мне нужно для вычисления разницы во времени между L8 и J8.

Эти ячейки отформатированы как «текст», и поскольку у них есть день, дата, время и «EST», форматирование ячеек с длинной датой, они не работают.

+0

ли формат всегда то же самое? '<3-буквенный день><3-буквенный месяц> HH: MM: SS EST YYYY'? – Werner

+0

Если возможно, я вернусь к источнику и попрошу лучше выбрать формат, а не работать с парсером. – jpw

+0

Да - формат всегда один и тот же. Текстовым файлом был дамп данных от «поставщика», и они ОЧЕНЬ неохотно запускают его снова. – user3285970

ответ

1

использует массив (столбец месяцев МММ, и 1-12) и, конечно, могут быть улучшены, но преодолеть Вас:

=DATE(RIGHT(J8,4),VLOOKUP(MID(J8,5,3),array,2,0),MID(J8,9,2))+VALUE(MID(J8,11,9)) 

в скажем Y8 и скопированы в Z8 с =Z8-Y8 в AA8 может костюм (для «времени»!)

Не учитывает различия в часовых поясах.

1

Я сделал это, чтобы разобрать значения даты/времени каждой ячейки:

=DATE(RIGHT(J8,4),VLOOKUP(MID(J8,5,3),$P$2:$Q$13,2,FALSE),MID(J8,9,LEN(J8)-26)) 
+TIME(MID(J8,11+LEN(J8)-27,2),MID(J8,14+LEN(J8)-27,2),MID(J8,17+LEN(J8)-27,2)) 

Тогда вы можете просто сделать простое вычитание между значениями двух ячеек.

Единственное, что мне нужно было добавить в электронную таблицу, это таблица поиска, чтобы сопоставить значение месяца с месяцем. Следовательно, VLOOKUP в формуле.

Мне также нужно было вычислить позицию смещения за днем, так как кажется, что она может иметь одну или две цифры - отсюда и магические цифры 26 и 27 в формуле.

+0

Используя это получает результат "NAME?" – user3285970

+0

@ user3285970 - Тогда вы что-то сделали неправильно. Вы копировали и вставляли мой ответ? – Enigmativity

1

Если L8 всегда позже, чем J8, и если формат всегда, как вы показываете (с тремя буквами на часовом поясе, и расстояние, как указано выше, то попробуйте:

= (MID (L8,5, 6) & " "& ПРАВЫЙ (L8,4) &", "& MID (L8,11,9)) - (MID (J8,5,6) &", "& ПРАВЫЙ (J8,4) &"" & MID (J8,11,9))

Еще одна оговорка в этом методе: ваша собственная дата по умолчанию (в панели управления Windows, а не в самом Excel) должна быть MDY, как в ваш текстовый дамп.

EDIT: Следующий (больше) версия должна работать независимо от того, если ваш родной формат даты MDY или ДМГ:

=(MID(L8,9,2)& MID(L8,4,4)&RIGHT(L8,5)&" "&MID(L8,11,9))-(MID(J8,9,2)& MID(J8,4,4)&RIGHT(J8,5)&" "&MID(J8,11,9)) 
+0

Спасибо, что подобрали это. Я не понимал, что конверсия не собирала год. Я изменю его. –

+0

Где это не удается? –

+1

Мои даты MDY (например, примеры), поэтому я предполагаю, что это проблема локали. И да, похоже, что я вычитаю строки, но поскольку они «похожи» на дату, Excel принуждает их к дате/времени. У меня тоже 2007 год. О, и я проверил с датами одинарной и двойной цифры и, по крайней мере, с MDY, он работает нормально. С датой в одну цифру после даты будет пробел, но Excel видит запятую перед годом, так что дополнительное пространство игнорируется. –

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