Страницы: 1
RSS
Преобразовать текст в дату
 
Добрый день! Как с помощью макроса преобразовать текст в дату?
 
nicex, вот так сразу макросом?
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
заменить автозаменой пробел на пусто и "г" на пусто
 
Цитата
с помощью макроса преобразовать текст в дату
UDF
Код
Function GetDate(s As String)
Dim re As Object
If re Is Nothing Then
    Set re = CreateObject("vbscript.regexp")
    re.Pattern = "\d\d\.\d\d\.\d\d\d\d"  
End If
GetDate = CDate(re.Execute(s)(0))
End Function
 
Спасибо!
 
Kuzmich, вмеесто Dim логично Static  :)
Код
Function GetDate(s As String)
Static re As Object
If re Is Nothing Then
    Set re = CreateObject("vbscript.regexp")
    re.Pattern = "\d\d\.\d\d\.\d\d\d\d|\d\d\.\d\d\.\d\d"
End If
GetDate = CDate(re.Execute(s)(0))
End Function
Изменено: AAF - 14.07.2017 19:52:42
 
Можно и проще
Код
Function GetDate1(s As String)
   GetDate1 = CDate(Left(s, Len(s) - 1))
End Function
 
Судя по сегодняшнему дню AAF целыми днями сидит и различные комбинации символов переводит в дату. Респект.  :)  
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
еще вариант функции и соответствующий ей макрос,кнопки test и повтор
 
Код
Function vvv(t$)
 With CreateObject("VBScript.RegExp"): .Pattern = "г"
    vvv = CDate(.Replace(t, ""))
 End With
End Function
Код
Sub test()
     Dim z, t$, i&: z = Range("E1:E" & Range("E" & Rows.Count).End(xlUp).Row).Value
  With CreateObject("VBScript.RegExp"): .Pattern = "г"
    For i = 1 To UBound(z): t = z(i, 1)
      z(i, 1) = CDate(.Replace(t, ""))
    Next
   Range("E1").Resize(UBound(z), 1).Value = z
   End With
End Sub
Изменено: sv2013 - 14.07.2017 23:28:26
 
Тогда и RegExp тревожить жалко...  :D
Код
Sub УбатьГ()
Dim a, rng As Range, i As Long
Set rng = Range("E1:E20")
a = rng.Value
For i = 1 To UBound(a)
  a(i, 1) = Replace(a(i, 1), "г", "")
  If IsDate(a(i, 1)) Then a(i, 1) = CDate(a(i, 1))
Next
rng.Formula = a
End Sub

Изменено: AAF - 15.07.2017 09:54:15
 
Код
Public Function mDate(s$) As Date
    mDate = LTrim$(Replace(s, "г", ""))
End Function
Я сам - дурнее всякого примера! ...
 
в #10 опечатка,надо:
Код
 a(i, 1) = Replace(a(i, 1), "г", "")
Изменено: sv2013 - 15.07.2017 08:57:38
 
sv2013, Точно...  8-0
 
Цитата
sv2013 написал: в #10 опечатка..
:D  не факт. Потому что
Код
Sub УбатьГ()   'р?
Согласие есть продукт при полном непротивлении сторон
 
Sanja, нет, я уже исправил  :)
Там другой символ стоял
Страницы: 1
Наверх