Разбор нестандартного формата даты в ячейке Excel

Я хочу преобразовать даты, отформатированные как «30 марта 2017, 05: 00: 00.000», к значению даты excel? Какое самое элегантное решение я могу сделать с помощью формулы ячейки, а не VBA?

    Это будет выполнять стандартные "rd","th","st","nd"

     =--(LEFT(A1,MIN(FIND({"rd","th","st","nd"},A1 & "thrdstnd"))-1)& ", " & SUBSTITUTE(MID(A1, MIN(FIND({"rd","th","st","nd"},A1 & "thrdstnd"))+2,LEN(A1)),",","")) 

    Вы можете добавить другие суффиксы, как вам нужно в формуле

    введите описание изображения здесь

    Затем вы можете отформатировать его по своему усмотрению.

    Вложенные функции IFERROR могут обрабатывать множество порядковых номеров.

     =--SUBSTITUTE(REPLACE(A2, IFERROR(FIND("st ", A2),IFERROR(FIND("nd ", A2),IFERROR(FIND("rd ", A2), IFERROR(FIND("th ", A2), LEN(A2))))), 3, ", "), ", ", " ",2) 

    введите описание изображения здесь

    Я использовал специальный формат номера [Color10]mmmm dd, yyyy hh:mm:ss.000;;;[Color3]@ . Помимо того факта, что текст выровнен по левому краю, а истинные даты выровнены по правому краю, это приведет к тому, что текст будет выглядеть как красный шрифт и истинные даты в зеленом шрифте.

    Если вы хотите получить истинную дату и хотите отбросить часть времени, выполните следующие действия:

     =DATEVALUE(SUBSTITUTE(LEFT(A1,FIND(",",A1)-1),"th",",")) 

    Вам нужно будет вложить функции SUBSTITUTE () для обработки ордеров «nd» и «st», если они у вас есть:

     =DATEVALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LEFT(A1,FIND(",",A1)-1),"th",","),"nd",","),"st",",")) 

    введите описание изображения здесь

    Давайте будем гением компьютера.