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

Вход

Регистрация

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

 

= Мир MS Excel/Обработка "кривых" дат - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, китин  
Обработка "кривых" дат
Leprotto Дата: Понедельник, 14.08.2017, 13:30 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 145
Репутация: 2 ±
Замечаний: 0% ±

Excel 2016
Всем привет!
Решал задачку переноса таблицы, заполненной в ворде, в эксель.
Талантов криво написать дату оказалось много %)
Поэтому решил поделиться формульным решением, надеюсь кому-нибудь пригодится
К сообщению приложен файл: goodDate.xlsx (11.6 Kb)


Сообщение отредактировал Leprotto - Понедельник, 14.08.2017, 13:33
 
Ответить
СообщениеВсем привет!
Решал задачку переноса таблицы, заполненной в ворде, в эксель.
Талантов криво написать дату оказалось много %)
Поэтому решил поделиться формульным решением, надеюсь кому-нибудь пригодится

Автор - Leprotto
Дата добавления - 14.08.2017 в 13:30
buchlotnik Дата: Понедельник, 14.08.2017, 15:59 | Сообщение № 2
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Вариант на регулярках - "до кучи"
[vba]
Код
Function gooddate(t$)
    Application.Volatile
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "\D+"
        gooddate = .Replace(t, "")
        If Len(gooddate) < 6 Or Len(gooddate) > 8 Then gooddate = "дата не найдена": Exit Function
        .Pattern = "(\d{2})(\d{2})(19|20|\d{0})(\d{2})"
        gooddate = CDate(.Replace(gooddate, "$1.$2.$4"))
    End With
End Function
[/vba]
К сообщению приложен файл: goodDate.xlsm (17.5 Kb)
 
Ответить
СообщениеВариант на регулярках - "до кучи"
[vba]
Код
Function gooddate(t$)
    Application.Volatile
    With CreateObject("VBScript.RegExp")
        .Global = True
        .Pattern = "\D+"
        gooddate = .Replace(t, "")
        If Len(gooddate) < 6 Or Len(gooddate) > 8 Then gooddate = "дата не найдена": Exit Function
        .Pattern = "(\d{2})(\d{2})(19|20|\d{0})(\d{2})"
        gooddate = CDate(.Replace(gooddate, "$1.$2.$4"))
    End With
End Function
[/vba]

Автор - buchlotnik
Дата добавления - 14.08.2017 в 15:59
alexa1965 Дата: Четверг, 17.08.2017, 09:41 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 376
Репутация: 61 ±
Замечаний: 0% ±

2003> 2019 >2016
Талантов криво написать дату оказалось много

Согласен полностью! Спасибо! Обязательно воспользуюсь Вашим решением


Главное не быть балабастиком
 
Ответить
Сообщение
Талантов криво написать дату оказалось много

Согласен полностью! Спасибо! Обязательно воспользуюсь Вашим решением

Автор - alexa1965
Дата добавления - 17.08.2017 в 09:41
vitos88 Дата: Среда, 27.09.2017, 15:45 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 5 ±
Замечаний: 0% ±

А что если усложнить задачу, пусть исправляет дату "налету". Т.е. в той же ячейке, где ввели кривую дату. Интересно, так можно сделать?
 
Ответить
СообщениеА что если усложнить задачу, пусть исправляет дату "налету". Т.е. в той же ячейке, где ввели кривую дату. Интересно, так можно сделать?

Автор - vitos88
Дата добавления - 27.09.2017 в 15:45
Leprotto Дата: Среда, 27.09.2017, 15:58 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 145
Репутация: 2 ±
Замечаний: 0% ±

Excel 2016
Цитата
Интересно, так можно сделать?

Если только макросом, думаю формульно не получится
 
Ответить
Сообщение
Цитата
Интересно, так можно сделать?

Если только макросом, думаю формульно не получится

Автор - Leprotto
Дата добавления - 27.09.2017 в 15:58
vitos88 Дата: Среда, 27.09.2017, 16:05 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 5 ±
Замечаний: 0% ±

Ну да, макросом. И прошлое решение тоже было макросом.
 
Ответить
СообщениеНу да, макросом. И прошлое решение тоже было макросом.

Автор - vitos88
Дата добавления - 27.09.2017 в 16:05
buchlotnik Дата: Четверг, 28.09.2017, 07:53 | Сообщение № 7
Группа: Заблокированные
Ранг: Участник клуба
Сообщений: 3442
Репутация: 929 ±
Замечаний: 20% ±

2010, 2013, 2016 RUS / ENG
Цитата
исправляет дату "налету". Т.е. в той же ячейке
угу и сколько таких ячеек? или "все"? и как интеллектуально распознать, что именно дату пытались ввести? мне кажется вопрос не для готовых решений
 
Ответить
Сообщение
Цитата
исправляет дату "налету". Т.е. в той же ячейке
угу и сколько таких ячеек? или "все"? и как интеллектуально распознать, что именно дату пытались ввести? мне кажется вопрос не для готовых решений

Автор - buchlotnik
Дата добавления - 28.09.2017 в 07:53
vitos88 Дата: Четверг, 28.09.2017, 10:04 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 5 ±
Замечаний: 0% ±

buchlotnik, допустим, в определённом столбце под названием дата :). А "кривые" даты распознавать по тем же шаблонам, что и в готовом решении.
 
Ответить
Сообщениеbuchlotnik, допустим, в определённом столбце под названием дата :). А "кривые" даты распознавать по тем же шаблонам, что и в готовом решении.

Автор - vitos88
Дата добавления - 28.09.2017 в 10:04
_Boroda_ Дата: Четверг, 28.09.2017, 10:09 | Сообщение № 9
Группа: Админы
Ранг: Местный житель
Сообщений: 16714
Репутация: 6503 ±
Замечаний: ±

2003; 2007; 2010; 2013 RUS
мне кажется вопрос не для готовых решений

Поддерживаю. Если кому нужно - можно создать отдельную тему с этим вопросом


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
мне кажется вопрос не для готовых решений

Поддерживаю. Если кому нужно - можно создать отдельную тему с этим вопросом

Автор - _Boroda_
Дата добавления - 28.09.2017 в 10:09
vitos88 Дата: Четверг, 28.09.2017, 10:33 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 5 ±
Замечаний: 0% ±

_Boroda_, не особо нужно, но иногда задумываюсь об этом, когда ввожу кривую дату. На счёт отдельной темы - я за! Мало ли кому в будущем понадобится. Где лучше её создать?
 
Ответить
Сообщение_Boroda_, не особо нужно, но иногда задумываюсь об этом, когда ввожу кривую дату. На счёт отдельной темы - я за! Мало ли кому в будущем понадобится. Где лучше её создать?

Автор - vitos88
Дата добавления - 28.09.2017 в 10:33
Leprotto Дата: Четверг, 28.09.2017, 10:41 | Сообщение № 11
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 145
Репутация: 2 ±
Замечаний: 0% ±

Excel 2016
Цитата
когда ввожу кривую дату

для этого есть стандартная проверка данных
vitos88, прочитайте первое сообщение...
Цитата
Решал задачку переноса таблицы, заполненной в ворде, в эксель.

Я предложил чисто формульное решение, buchlotnik, дополнил его красивой Function.
В пределах темы, думаю, этого достаточно!
 
Ответить
Сообщение
Цитата
когда ввожу кривую дату

для этого есть стандартная проверка данных
vitos88, прочитайте первое сообщение...
Цитата
Решал задачку переноса таблицы, заполненной в ворде, в эксель.

Я предложил чисто формульное решение, buchlotnik, дополнил его красивой Function.
В пределах темы, думаю, этого достаточно!

Автор - Leprotto
Дата добавления - 28.09.2017 в 10:41
  • Страница 1 из 1
  • 1
Поиск:

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