Если format()
не работает, то (как вы не сказали нам иначе) мы должны предположить, что ячейка содержит эту дату как текст, а не как дату.
В этом случае позвольте мне предложить один из множества методов преобразования этого значения в мм / дд / гггг:
Format(DateValue(Replace(Mid(Split(Range("A1").Value, ", ")(0), 4, 20), "'", "")), "mm/dd/yyyy")
Как упоминает @Peh, это не лучший способ справиться с датой. Лучше держать дату как Дата - и, если вы пишете в ячейку, записать эту Дата в ячейку как Дата . Это значительно упрощает манипулирование датой, и вы просто применяете форматирование к ячейке, чтобы получить желаемый вид.
Чтобы получить Дата , вы можете использовать:
DateValue(Replace(Mid(Split(Range("A1").Value, ", ")(0), 4, 20), "'", ""))
Пояснение:
Split(Range("A1").Value, ", ")(0)
Создает массив, содержащий строку, разделенную на две части, первая часть (0)
содержит левый элемент, вторая часть (1)
содержит правый элемент.
Так Fri Jun 30 '17, 11:15:56 am
становится Fri Jun 30 '17
Затем возьмем часть левой части выше:
Mid(<left hand part>, 4, 20)
от символа 4, для (до) 20 символов.
Так Fri Jun 30 '17
становится Jun 30 '17
Затем мы удаляем '
с помощью функции Replace(text , "'", "")
.
То есть Jun 30 '17
становится Jun 30 17
Функция DateValue
преобразует строки, содержащие даты, в фактическое значение даты. Jun 30 17
распознается в Excel как дата, и если элемент месяца очевиден (т. Е. Слово, а не число), то Excel может однозначно преобразовать его.
То есть Jun 30 17
становится 42916
(что составляет 42 916 дней с 31 декабря 1899 г.).