Преобразовать дату/время в формат Excel
bosse-sl
Дата: Суббота, 16.07.2016, 12:37 |
Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Подскажите как преобразовать данную дату/время (16 июля 2016 г. 11:25:09) к формату Excel?
Подскажите как преобразовать данную дату/время (16 июля 2016 г. 11:25:09) к формату Excel? bosse-sl
Ответить
Сообщение Подскажите как преобразовать данную дату/время (16 июля 2016 г. 11:25:09) к формату Excel? Автор - bosse-sl Дата добавления - 16.07.2016 в 12:37
Rioran
Дата: Суббота, 16.07.2016, 13:10 |
Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация:
290
±
Замечаний:
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] Подходит?
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
Роман, Москва, 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
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация:
898
±
Замечаний:
0% ±
Excel 2010, 2016
У меня почти тоже самое получилось)) Но раз уж написала: [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]
У меня почти тоже самое получилось)) Но раз уж написала: [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
ЯД: 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
Rioran , здравствуйте, Спасибо, приспособил под своё
Rioran , здравствуйте, Спасибо, приспособил под своёbosse-sl
Сообщение отредактировал bosse-sl - Суббота, 16.07.2016, 13:56
Ответить
Сообщение Rioran , здравствуйте, Спасибо, приспособил под своёАвтор - bosse-sl Дата добавления - 16.07.2016 в 13:51
bosse-sl
Дата: Суббота, 16.07.2016, 13:55 |
Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 21
Manyasha , Добрый день. Спасибо.
Ответить
Сообщение Manyasha , Добрый день. Спасибо.Автор - bosse-sl Дата добавления - 16.07.2016 в 13:55
Nic70y
Дата: Суббота, 16.07.2016, 13:58 |
Сообщение № 6
Группа: Друзья
Ранг: Экселист
Сообщений: 8712
Репутация:
2262
±
Замечаний:
0% ±
Excel 2010
без vbaКод
=ДАТА(ЛЕВБ(ПРАВБ(B2;16);4);ПОИСК(ПСТР(B2;5;2);"ёнвеварпраяюнюлвгенктояек")/2;ЛЕВБ(B2;2))+ЛЕВБ(ПРАВБ(B2;8);5)
Код
=ДАТА(ЛЕВБ(ПРАВБ(B2;16);4);ПОИСК(ПСТР(B2;5;2);"ёнвеварпраяюнюлвгенктояек")/2;ЛЕВБ(B2;2))+ПРАВБ(B2;8)
без 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
ЮMoney 41001841029809
Сообщение отредактировал 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
Группа: Друзья
Ранг: Старожил
Сообщений: 2346
Репутация:
989
±
Замечаний:
0% ±
Excel 2007,2010,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]
исчо вариант [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
email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
Сообщение отредактировал 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
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация:
6478
±
Замечаний:
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);" г.";)
Если укажете один точный вариант, то формулу можно будет написать короче
Еще вариант формулами Не понятно, как у Вас записывается дата с днем и часами, меньшими 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_
Скажи мне, кудесник, любимец ба’гов... Платная помощь: 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
Группа: Друзья
Ранг: Участник клуба
Сообщений: 2706
Репутация:
1123
±
Замечаний:
0% ±
начинал с Excel 4.0, видел 2.1
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]
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
МОИ: Ник , 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
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация:
290
±
Замечаний:
0% ±
Excel 2013
Gustav , круто. Плюсую в репутацию.
Gustav , круто. Плюсую в репутацию.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
Ответить
Сообщение Gustav , круто. Плюсую в репутацию.Автор - Rioran Дата добавления - 18.07.2016 в 10:22