Похожие вопросы

Как повредить дату изменения файла
Импорт определенного формата даты в Excel из Microsoft SQL Server
Сохранить вывод команды date и watch в файл
Libreoffice Base: требуется сегодняшняя дата в качестве значения по умолчанию в поле формы
Баш - преобразовать все экземпляры формат даты ДД-ММ-гггг гггг-ММ-ДД [закрыт]
Неточные даты отображаются в Excel (даты вычисляются с 1904 вместо 1900)
Как установить mergefield, чтобы показать длинный формат даты?
Автоматическое включение даты сохранения в имени файла?
Как округлить время и дату до предыдущего дня с помощью формулы в excel?
Изменение всех пользователей короткий формат даты в Windows 2008R2 с помощью сценария
IExcel не сравнивает даты правильно
Как добавить дату в часы панели задач без изменения ее размера?
Как отключить день недели в расширенной панели задач в Windows 10
Смешивание слов даты (1923 становится 2023)
Сводная таблица Excel-Как вернуть дату в значении строки?

Как разобрать нестандартный формат даты в Excel?

у меня есть столбец с датой, как строковые значения в формате yyyy-mm-dd, например 2011-Sep-13. Мне нужно преобразовать их в серийные номера даты Excel, чтобы я мог использовать их в формулах.

DATEVALUE не может распознать этот формат; я просто получаю #VALUE! когда я попробовать. Он также не занимает пользовательский формат даты (в отличие от большинства языков программирования).

как я могу конвертировать произвольные форматы даты в значения даты Excel?

5
задан Craig Walker
источник

3 ответов

вам нужно выполнить разбор строк, а затем передать соответствующее форматированное значение в DATEVALUE – что-то вроде этого:

=DATEVALUE(RIGHT(A1,2)&"-"&MID(A1,6,3)&"-"&LEFT(A1,4))

(edit: обновлена формула - проверено и работает она у меня на одном примере - возможно потребуется доработка в зависимости от вашего ввода)

19
отвечен Aerik 2011-09-13 18:07:37
источник

обратите внимание, что имена месяцев зависят от региональных параметров Windows. Таким образом, если региональные параметры Windows установлены на украинский язык, то DATEVALUE вернет #VALUE! для "07-ноя-2012", но согласится "07-Лис-2012".

4
отвечен Olexa 2012-11-07 12:36:00
источник

первенствует функция DateValue зависит от региона. Если вы разбираете строку как "04-11-2008" в Европе, которая будет проанализирована как 4 ноября и в США как 11 апреля.

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

' Region independent date parsing
' Expects a datetimestr in the format  "04-11-2008 21:39:39"
' The function VBA.DateTime.DateValue() mixes up the date and month in different regions
Function parseDateTime(dateTimeStr As String) As Date

    Dim parts As Variant
    parts = VBA.Strings.Split(dateTimeStr, " ")

    Dim datePart As String, timePart As String
    datePart = parts(0)
    timePart = parts(1)

    Dim dateParts As Variant, day As Integer, month As Integer, year As Integer
    dateParts = VBA.Strings.Split(datePart, "-")
    day = dateParts(0)
    month = dateParts(1)
    year = dateParts(2)

    Dim parsed_date As Date, parsed_time As Date
    parsed_date = VBA.DateTime.DateSerial(year, month, day)
    parsed_time = VBA.DateTime.TimeValue(timePart)

    parseDateTime = parsed_date + parsed_time
End Function
0
отвечен CodeKid 2018-08-21 09:50:01
источник

Другие вопросы date microsoft-excel