2017-01-10 3 views
0

Я пытаюсь отформатировать строку для отображения даты и времени в Excel.Дата извлечения и форматирования из смешанного текста

Строка 6/1/2009 17:55:9, так как вы можете видеть, что ей не хватает нулей и не будет форматироваться в формате dd/mm/yyyy hh: mm: ss, так что это невозможно.

После целого дня попытки, я добрался до сцены, где я могу вывести его, чтобы он выглядел как 01:06:2009 17:55:09. Тем не менее он по-прежнему не будет сортироваться независимо от того, какой пользовательский формат я стараюсь. Формула, которую я придумал, чтобы получить этот результат:

=IF(VALUE(TRIM(MID(SUBSTITUTE((LEFT(C2, SEARCH(" ",C2,1))),"/",REPT(" ",99)),2*99-98,99)))<10,"0","")&TRIM(MID(SUBSTITUTE((LEFT(C2, SEARCH(" ",C2,1))),"/",REPT(" ",99)),2*99-98,99))&":"&(IF(VALUE(TRIM(MID(SUBSTITUTE((LEFT(C2, SEARCH(" ",C2,1))),"/",REPT(" ",99)),1*99-98,99)))<10,"0",""))&TRIM(MID(SUBSTITUTE((LEFT(C2, SEARCH(" ",C2,1))),"/",REPT(" ",99)),1*99-98,99))&":"&(IF(VALUE(TRIM(MID(SUBSTITUTE((LEFT(C2, SEARCH(" ",C2,1))),"/",REPT(" ",99)),3*99-98,99)))<10,"0","")&TRIM(MID(SUBSTITUTE((LEFT(C2, SEARCH(" ",C2,1))),"/",REPT(" ",99)),3*99-98,99)))&" "&(IF(VALUE(TRIM(MID(SUBSTITUTE((RIGHT(C2,LEN(C2)-SEARCH(" ",C2,1))),":",REPT(" ",99)),1*99-98,99)))<10,"0","")&TRIM(MID(SUBSTITUTE((RIGHT(C2,LEN(C2)-SEARCH(" ",C2,1))),":",REPT(" ",99)),1*99-98,99)))&":"&IF(VALUE(TRIM(MID(SUBSTITUTE((RIGHT(C2,LEN(C2)-SEARCH(" ",C2,1))),":",REPT(" ",99)),2*99-98,99)))<10,"0","")&TRIM(MID(SUBSTITUTE((RIGHT(C2,LEN(C2)-SEARCH(" ",C2,1))),":",REPT(" ",99)),2*99-98,99))&":"&(IF(VALUE(TRIM(MID(SUBSTITUTE((RIGHT(C2,LEN(C2)-SEARCH(" ",C2,1))),":",REPT(" ",99)),3*99-98,99)))<10,"0","")&TRIM(MID(SUBSTITUTE((RIGHT(C2,LEN(C2)-SEARCH(" ",C2,1))),":",REPT(" ",99)),3*99-98,99))) 

Я никогда абсолютно никакой подсказки, что делать здесь, я попытался извлечения значения из ячеек и сортировки, что, но это не работайте.

Кто-нибудь знает, что делать? Cheers, MS.

EDIT: Благодаря советам @CallumDA и @ elmer007 Теперь я знаю, что строка должна быть сначала преобразована в число, используя * 1 или = VALUE. Я мог бы применить сортировку к исходной дате в столбце C, но я хотел, чтобы она представлялась в формате dd/mm/yyyy hh: mm: ss, но некоторые из значений были одиночными. Чтобы исправить это, я искал и извлекал каждую часть даты и времени отдельно и добавлял нуль к началу каждого, если это была только одна цифра. Сделав это, он выглядел так, как будто он был в правильном формате, но без * 1 он все еще был строкой, а не номером, поэтому не удалось сортировать по дате в диаграмме.

Я понимаю, что это все еще очень запутанно, поскольку я пытаюсь объяснить все эти технические вещи, не понимая ни малейшего его проявления. Сожалею!

+0

Что мне не хватает? Я вставил вашу строку в excel и отформатировал ее как дату сразу – CallumDA

ответ

0

Я пытаюсь отформатировать строку для отображения даты и времени в формате excel.
... и не будет форматироваться в формате dd/mm/yyyy hh: mm: ss, так что это невозможно.

Если по какой-либо причине ваши даты отформатированы как строки, они будут сортироваться только по A>Z. Вам нужно преобразовать строки в числа, чтобы отсортировать их по времени. Затем вы можете использовать собственное форматирование, чтобы дать им нужный dd/mm/yyyy hh:mm:ss.

Вот несколько способов, чтобы преобразовать строку в число:

=A1*1 
=VALUE(A1) 

Теперь ваша строка 6/1/2009 17:55:9 должна стать 39819.7466319444 (формат, как General, чтобы убедиться). Целочисленная часть представляет дату, а десятичная часть представляет время.

Ваши данные будут отсортированы в этот момент, но вы также можете применить свой собственный формат dd/mm/yyyy hh:ss:mm, чтобы сделать их более читаемыми.

+0

. См. Редактирование. Но да, это сработало, спасибо! – user7397354

+0

Рад помочь - спасибо за обновление вопроса, это имеет смысл сейчас :) – CallumDA

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