Excel VBA разбивает строку на дату

У меня есть строка, которую я хочу разделить на формат ММ/ДД/ГГГГ. Пример: «TIME_STAMP : Mon 22 июля 15:45:43 2024» необходимо будет разделить, и результат должен быть «22 июля 2024», если это возможно, но если просто строка «22 июля 2024» тоже подойдет. Ниже приведен код, который я нашел в Интернете, но, похоже, он не работает.

Function ReturnNthElement(CellRef As Range, ElementNumber As Integer)
Dim Result() As String
Result = Split(CellRef, ",")
ReturnNthElement = Result(ElementNumber - 1)
End Function

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
2
0
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете использовать этот метод:

Dim TextTime As String
Dim TrueDate As Date

TextTime = "TIME_STAMP : Mon Jul 22 15:45:43 2024" 
TrueDate = DateValue(Right(TextTime, 4) & Mid(TextTime, 17, 7))

если вы не возражаете, можете ли вы объяснить значение DateValue(Right(TextTime, 4) & Mid(TextTime, 17, 7)) и то, как это работает?

user23357972 04.09.2024 09:55

@user23357972 Right(TextTime, 4) = "2024", Mid(TextTime, 17, 7) = " Jul 22 15:45:43" итак "2024" & " Jul 22 15:45:43", тогда DateValue("2024 Jul 22 15:45:43") — это синтаксис, который vba распознает и может преобразовать для вас в метку времени

Greedo 04.09.2024 10:18

Предупреждение для немногих людей, не ориентированных на США: это не сработает, если названия месяцев в строке даты и названия месяцев в ваших местных региональных настройках различаются. Например, на моем компьютере я использую немецкий формат даты. DateValue("2024 Jul 22 15:45:43") будет работать (поскольку «июль» по-немецки то же самое), но DateValue("2024 May 22 15:45:43") не получится (поскольку «май» по-немецки означает «май»)

FunThomas 04.09.2024 10:31

Используемая вами функция разделения пытается разделить строку на значения, разделенные запятыми. Т.е. Результат = Разделить(CellRef, ",")

Поскольку ваша строка не разделена запятыми, она не работает, поскольку не может найти запятую.

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

Заменять? - Разделителем функции разделения по умолчанию является пробел (вообще не требуется аргумент-разделитель - или " " вместо ",")

T.M. 04.09.2024 10:18

Хороший момент - мой плохой

JULIANG 04.09.2024 10:51

Другие вопросы по теме