У меня есть строка, которую я хочу разделить на формат ММ/ДД/ГГГГ. Пример: «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
Вы можете использовать этот метод:
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))
@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 распознает и может преобразовать для вас в метку времени
Предупреждение для немногих людей, не ориентированных на США: это не сработает, если названия месяцев в строке даты и названия месяцев в ваших местных региональных настройках различаются. Например, на моем компьютере я использую немецкий формат даты. DateValue("2024 Jul 22 15:45:43")
будет работать (поскольку «июль» по-немецки то же самое), но DateValue("2024 May 22 15:45:43")
не получится (поскольку «май» по-немецки означает «май»)
Используемая вами функция разделения пытается разделить строку на значения, разделенные запятыми. Т.е. Результат = Разделить(CellRef, ",")
Поскольку ваша строка не разделена запятыми, она не работает, поскольку не может найти запятую.
Используйте встроенную функцию замены или функцию замены, чтобы сначала заменить пробелы в ячейке запятыми, а затем эта часть функции должна работать.
Заменять? - Разделителем функции разделения по умолчанию является пробел (вообще не требуется аргумент-разделитель - или " "
вместо ","
)
Хороший момент - мой плохой
если вы не возражаете, можете ли вы объяснить значение DateValue(Right(TextTime, 4) & Mid(TextTime, 17, 7)) и то, как это работает?