Как преобразовать формат даты типа «Пт 30 июня 17, 11:15:56 утра» в формат «мм / дд / гггг» в VBA - PullRequest
0 голосов
/ 29 апреля 2019

У меня есть необходимость конвертировать даты формата Fri Jun 30 '17, 11:15:56 am в mm/dd/yyyy формат с использованием VBA. Я попробовал format() функцию, но она не сработала.

1 Ответ

2 голосов
/ 29 апреля 2019

Если 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 г.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...