Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2012, 14:58   #1
Even
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 45
По умолчанию Поиск даты в тексте

Морозного всем утра. Подскажите пожалуйста. Можно ли определить дату в тексте. Например, если в ячейки написано "Сегодня 30.01.2012 ..." и т.д. То "Msgbox" выдаёт только "30.01.2012". В тексте точно только одна дата. Заранее огромное ...
Even вне форума Ответить с цитированием
Старый 30.01.2012, 15:20   #2
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

"Сегодня 30.01.2012 ..." в ячейке А1:
Код:
=ПСТР(A1;ПОИСК("??.??.????";A1);10)
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 30.01.2012, 16:09   #3
Even
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 45
По умолчанию

Надо через VBA, и что бы отображал дату, а не искал её по критериям.
Even вне форума Ответить с цитированием
Старый 30.01.2012, 17:34   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Function DateIn(ByVal s As String) As Date
  Dim p As Long
  If Not s Like "*#.*#.*##*" Then DateIn = 0: Exit Function
  p = WorksheetFunction.Search("?.*?.*??", s) - 1
  s = Trim(Mid(s, p, 10))
  Do While Not IsDate(s): s = Left(s, Len(s) - 1): Loop
  DateIn = CDate(s)
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 30.01.2012, 17:42   #5
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Игорь,
Цитата:
Сообщение от Even Посмотреть сообщение
Надо что бы отображал дату, а не искал её по критериям.
А у тебя поиск Search("?.*?.*??"), да ещё и функцией листа (WorksheetFunction)

ЗЫ А надо - силой мысли
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 31.01.2012, 10:38   #6
Even
Пользователь
 
Регистрация: 11.12.2009
Сообщений: 45
По умолчанию

Спасибо, всем большое. У меня всё-таки получилось так...

Dim a
Dim i
Dim clls
clls = Cells(1, 1)
For i = 1 To Len(clls)
If IsNumeric(Right((Left(clls, i)), 1)) = True Then
For a = 1 To 15
If IsDate(Right((Left(clls, i + a - 1)), a)) = True Then
MsgBox (CDate(Right((Left(clls, i + a - 1)), a)))
Exit Sub
End If
Next a
Exit Sub
End If
Next i

End Sub
Even вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в тексте Terikon Общие вопросы Delphi 2 06.05.2011 23:01
Какие есть методы для поиска даты в тексте ? kakawkin Общие вопросы Delphi 9 17.10.2010 19:28
Поиск в тексте Whiter Общие вопросы Delphi 10 30.07.2009 15:55
Поиск в тексте Rigard Общие вопросы Delphi 8 15.10.2008 00:06
Поиск в тексте jone Общие вопросы Delphi 14 28.09.2008 12:42