Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Преобразовать дату/время в формат Excel - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Преобразовать дату/время в формат Excel (Макросы/Sub)
Преобразовать дату/время в формат Excel
bosse-sl Дата: Суббота, 16.07.2016, 12:37 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 20% ±

Подскажите как преобразовать данную дату/время (16 июля 2016 г. 11:25:09) к формату Excel?
К сообщению приложен файл: 6980915.xls(14Kb)
 
Ответить
СообщениеПодскажите как преобразовать данную дату/время (16 июля 2016 г. 11:25:09) к формату Excel?

Автор - bosse-sl
Дата добавления - 16.07.2016 в 12:37
Rioran Дата: Суббота, 16.07.2016, 13:10 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 886
Репутация: 281 ±
Замечаний: 0% ±

Excel 2013
bosse-sl, здравствуйте.

Предлагаю решение через UDF. Пример в файле (включите макросы), код ниже:

[vba]
Код
Public Function Rio_Date(S$) As Date
    Dim A, sMonth$
    A = Split(S, " ")
    sMonth = "ХХ-янв-фев-мар-апр-май-июн-июл-авг-сен-окт-ноя-дек"
    Rio_Date = DateSerial(Left(A(2), 4) + 0, InStr(1, sMonth, Left(A(1), 3)) / 4, A(0) + 0) + CDate(A(UBound(A)))
End Function
[/vba]
Подходит?
К сообщению приложен файл: Rio_Date.xls(30Kb)


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеbosse-sl, здравствуйте.

Предлагаю решение через UDF. Пример в файле (включите макросы), код ниже:

[vba]
Код
Public Function Rio_Date(S$) As Date
    Dim A, sMonth$
    A = Split(S, " ")
    sMonth = "ХХ-янв-фев-мар-апр-май-июн-июл-авг-сен-окт-ноя-дек"
    Rio_Date = DateSerial(Left(A(2), 4) + 0, InStr(1, sMonth, Left(A(1), 3)) / 4, A(0) + 0) + CDate(A(UBound(A)))
End Function
[/vba]
Подходит?

Автор - Rioran
Дата добавления - 16.07.2016 в 13:10
Manyasha Дата: Суббота, 16.07.2016, 13:40 | Сообщение № 3
Группа: Модераторы
Ранг: Старожил
Сообщений: 1590
Репутация: 669 ±
Замечаний: 0% ±

Excel 2007, 2010
У меня почти тоже самое получилось))
Но раз уж написала:
[vba]
Код
Function textToDate(sDate As String) As Date
    Dim arrMonth, monInt%, arr
    arrMonth = Array("января", "февраля", "марта", "апреля", "мая", "июня", _
                    "июля", "августа", "сентября", "октября", "ноября", "декабря")
    arr = Split(sDate, " ")
    monInt = Application.WorksheetFunction.Match(arr(1), arrMonth, 0)
    textToDate = DateSerial(Left(arr(2), 4), monInt, arr(0)) + CDate(arr(UBound(arr)))
End Function
[/vba]


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеУ меня почти тоже самое получилось))
Но раз уж написала:
[vba]
Код
Function textToDate(sDate As String) As Date
    Dim arrMonth, monInt%, arr
    arrMonth = Array("января", "февраля", "марта", "апреля", "мая", "июня", _
                    "июля", "августа", "сентября", "октября", "ноября", "декабря")
    arr = Split(sDate, " ")
    monInt = Application.WorksheetFunction.Match(arr(1), arrMonth, 0)
    textToDate = DateSerial(Left(arr(2), 4), monInt, arr(0)) + CDate(arr(UBound(arr)))
End Function
[/vba]

Автор - Manyasha
Дата добавления - 16.07.2016 в 13:40
bosse-sl Дата: Суббота, 16.07.2016, 13:51 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 20% ±

Rioran, здравствуйте,
Спасибо, приспособил под своё
К сообщению приложен файл: 1517918.xls(44Kb)


Сообщение отредактировал bosse-sl - Суббота, 16.07.2016, 13:56
 
Ответить
СообщениеRioran, здравствуйте,
Спасибо, приспособил под своё

Автор - bosse-sl
Дата добавления - 16.07.2016 в 13:51
bosse-sl Дата: Суббота, 16.07.2016, 13:55 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Репутация: 0 ±
Замечаний: 20% ±

Manyasha, Добрый день.
Спасибо.
 
Ответить
СообщениеManyasha, Добрый день.
Спасибо.

Автор - bosse-sl
Дата добавления - 16.07.2016 в 13:55
Nic70y Дата: Суббота, 16.07.2016, 13:58 | Сообщение № 6
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3493
Репутация: 724 ±
Замечаний: 0% ±

Excel 2013
без vba
Код
=ДАТА(ЛЕВБ(ПРАВБ(B2;16);4);ПОИСК(ПСТР(B2;5;2);"ёнвеварпраяюнюлвгенктояек")/2;ЛЕВБ(B2;2))+ЛЕВБ(ПРАВБ(B2;8);5)
Код
=ДАТА(ЛЕВБ(ПРАВБ(B2;16);4);ПОИСК(ПСТР(B2;5;2);"ёнвеварпраяюнюлвгенктояек")/2;ЛЕВБ(B2;2))+ПРАВБ(B2;8)


ЯД(poison) 41001841029809
+7 978 049 98 74 (мтс)


Сообщение отредактировал Nic70y - Суббота, 16.07.2016, 13:59
 
Ответить
Сообщениебез vba
Код
=ДАТА(ЛЕВБ(ПРАВБ(B2;16);4);ПОИСК(ПСТР(B2;5;2);"ёнвеварпраяюнюлвгенктояек")/2;ЛЕВБ(B2;2))+ЛЕВБ(ПРАВБ(B2;8);5)
Код
=ДАТА(ЛЕВБ(ПРАВБ(B2;16);4);ПОИСК(ПСТР(B2;5;2);"ёнвеварпраяюнюлвгенктояек")/2;ЛЕВБ(B2;2))+ПРАВБ(B2;8)

Автор - Nic70y
Дата добавления - 16.07.2016 в 13:58
krosav4ig Дата: Суббота, 16.07.2016, 19:14 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 1362
Репутация: 548 ±
Замечаний: 0% ±

Excel 2007, 2013
исчо вариант [vba]
Код
Function GetDate(s$) As Date
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "((\d+)|(\W{3})\W*)([  :])+|\W"
        GetDate = .Replace(s, "$2$3$4")
    End With
End Function
[/vba]
К сообщению приложен файл: 6980915.xlsm(17Kb)


(_)Õvõ(_)

Сообщение отредактировал krosav4ig - Воскресенье, 17.07.2016, 14:42
 
Ответить
Сообщениеисчо вариант [vba]
Код
Function GetDate(s$) As Date
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "((\d+)|(\W{3})\W*)([  :])+|\W"
        GetDate = .Replace(s, "$2$3$4")
    End With
End Function
[/vba]

Автор - krosav4ig
Дата добавления - 16.07.2016 в 19:14
_Boroda_ Дата: Воскресенье, 17.07.2016, 04:00 | Сообщение № 8
Группа: Модераторы
Ранг: Экселист
Сообщений: 9381
Репутация: 3951 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Еще вариант формулами
Не понятно, как у Вас записывается дата с днем и часами, меньшими 10.
Вот так 5 июля 2016 г. 5:49:21
или вот так 5 июля 2016 г. 05:49:21
или вот так 05 июля 2016 г. 05:49:21
Для любого из этих вариантов
Код
=--(ЛЕВБ(B2;ПОИСК(" ";B2)+3)&ПСТР(B2;ПОИСК(" ";B2;6);5))+СЖПРОБЕЛЫ(ПРАВБ(B2;8))

Код
=--(ЛЕВБ(B2;ПОИСК(" ";B2)+3)&ПСТР(B2;ПОИСК(" ";B2;6);5)&" "&ПРАВБ(B2;8))

Код
=--ПОДСТАВИТЬ(ЛЕВБ(B2;ПОИСК(" ";B2)+3)&ПСТР(B2;ПОИСК(" ";B2;6);99);" г.";)

Если укажете один точный вариант, то формулу можно будет написать короче
К сообщению приложен файл: 6980915_1.xls(28Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеЕще вариант формулами
Не понятно, как у Вас записывается дата с днем и часами, меньшими 10.
Вот так 5 июля 2016 г. 5:49:21
или вот так 5 июля 2016 г. 05:49:21
или вот так 05 июля 2016 г. 05:49:21
Для любого из этих вариантов
Код
=--(ЛЕВБ(B2;ПОИСК(" ";B2)+3)&ПСТР(B2;ПОИСК(" ";B2;6);5))+СЖПРОБЕЛЫ(ПРАВБ(B2;8))

Код
=--(ЛЕВБ(B2;ПОИСК(" ";B2)+3)&ПСТР(B2;ПОИСК(" ";B2;6);5)&" "&ПРАВБ(B2;8))

Код
=--ПОДСТАВИТЬ(ЛЕВБ(B2;ПОИСК(" ";B2)+3)&ПСТР(B2;ПОИСК(" ";B2;6);99);" г.";)

Если укажете один точный вариант, то формулу можно будет написать короче

Автор - _Boroda_
Дата добавления - 17.07.2016 в 04:00
Gustav Дата: Воскресенье, 17.07.2016, 15:10 | Сообщение № 9
Группа: Друзья
Ранг: Старожил
Сообщений: 1211
Репутация: 484 ±
Замечаний: 0% ±

начинал с Excel 4.0...
Rioran, Manyasha, функция CDate достаточно интеллектуальна в плане окончания месяца и количества пробелов между компонентами даты и правильно конвертирует даже строку типа такой:
[vba]
Код
? CDate("  0015    июля     02016   0017 : 035 :     00057  ")

15.07.2016 17:35:57
[/vba]
Поэтому всё, что нужно сделать до преобразования - удалить из строки подстроку "г.":
[vba]
Код
Function toDate(str As String) As Date
    toDate = CDate(Replace(str, "г.", ""))
End Function
[/vba]


Мой tip box - яд 41001663842605
 
Ответить
СообщениеRioran, Manyasha, функция CDate достаточно интеллектуальна в плане окончания месяца и количества пробелов между компонентами даты и правильно конвертирует даже строку типа такой:
[vba]
Код
? CDate("  0015    июля     02016   0017 : 035 :     00057  ")

15.07.2016 17:35:57
[/vba]
Поэтому всё, что нужно сделать до преобразования - удалить из строки подстроку "г.":
[vba]
Код
Function toDate(str As String) As Date
    toDate = CDate(Replace(str, "г.", ""))
End Function
[/vba]

Автор - Gustav
Дата добавления - 17.07.2016 в 15:10
Rioran Дата: Понедельник, 18.07.2016, 10:22 | Сообщение № 10
Группа: Авторы
Ранг: Ветеран
Сообщений: 886
Репутация: 281 ±
Замечаний: 0% ±

Excel 2013
Gustav, круто. Плюсую в репутацию.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
СообщениеGustav, круто. Плюсую в репутацию.

Автор - Rioran
Дата добавления - 18.07.2016 в 10:22
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Преобразовать дату/время в формат Excel (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!