Страницы: 1
RSS
Как вытащить время из текстовой строки?
 
Всем добра!
Не могу решить казалось бы простую задачку.. :(
Файл-пример не прикладываю, т.к. по большому счету, в нем нет смысла, достаточно просто скопировать на лист вот эти данные:

время 1:03:36.
времени прошло 1:10:14
затрачено времени 1:08:45
продолжительность 01:36.
длительность (время) 20:59
период по времени 47:38.
временной интервал 07:00.
актуально по времени продолжительностью 44:27.

то есть, как видно, тут указано время, но.. есть два варианта: либо минуты и секунды, либо же, часы, минуты, секунды..
как вытащить время в отдельную ячейку, чтобы было правильно? то есть, когда часы,минуты секунды, вытаскивалось, соответственно, часы минуты, секунды, а когда только минуты секунды, то, соответственно, минуты и секунды..

понятно, что у ячейки, куда будут вытаскиваться данные, будет формат "[ч]:мм:сс"

Буду очень признателен за подсказку или решение! :-)
 
Как получить слово после последнего пробела
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
спасибо большое за ссылочку, проблемы нет получить слово после последнего пробела, суть вопроса не в этом же :(
 
Цитата
Zhukov_K написал:
проблемы нет получить слово после последнего пробела
Ну если это не проблема, то и остальное тоже должно быть не. Считаете число двоеточий если одно то к этому "мм:сс" дописываете "00:" в начало и преобразуете во время, а если их уже два - то сразу во время.
 
Андрей VG
А как 44:27 преобразовать в формат "[ч]:мм:сс"
 
Zhukov_K, вариант
Код
Function Zh(ByVal x As String)
Dim i&, j&
'поиск последней цифры
  For i = Len(x) To 1 Step -1
    If IsNumeric(Mid$(x, i, 1)) Then Exit For
  Next
'поиск первой цифры
  j = InStrRev(x, " ", i)
  x = Mid$(x, j + 1, i - j)
  If Len(x) - Len(Replace(x, ":", "")) = 1 Then x = "0:" & x
  Zh = CDate(x)
End Function
 
=--СЖПРОБЕЛЫ(ЕСЛИ(ДЛСТР(A1)-ПОИСК(":";A1)<5;"00:";"")&ПОДСТАВИТЬ(ПСТР(A1;ПОИСК(":";A1)-2;8);".";))
 
неужели для такой простой задачи нужны макросы? :(
за макрос, конечно, спасибо!! :-)
 
Цитата
Kuzmich написал:
А как 44:27 преобразовать в формат "[ч]:мм:сс"
По условию 44 минуты 27 секунд. Не претендуя на краткость
 
vikttur, спасибо огромное! похоже, что формула делает то, что надо!!! )
 
Привет всем. UDF как Андрей предложил:
Код
Public Function ExtractTime(s$) As Date
    Dim d
    If Not s Like "*##:##*" Then ExtractTime = "": Exit Function
    d = Split(Replace(s, ".", ""), " ")
    d = d(UBound(d))
    If UBound(Split(d, ":")) = 1 Then d = "00:" & d
    ExtractTime = CDate(d)
End Function
Изменено: kuklp - 28.03.2016 00:16:51
Я сам - дурнее всякого примера! ...
 
Вариант, не привязывающийся к положению времени в тексте
Код
Function GetTimeFromText(Text As String)
    Dim obj As Object
    With CreateObject("VBScript.Regexp")
        .Pattern = "\d{1,2}:\d{1,2}(:\d{1,2})?"
        Set obj = .Execute(Text)
        If obj.Count = 0 Then
            GetTimeFromText = CVErr("#Value")
            Exit Function
        End If
        If Len(obj(0)) - Len(Replace(obj(0), ":", "")) < 2 Then _
        GetTimeFromText = CDate("0:" & obj(0)) Else GetTimeFromText = CDate(obj(0))
    End With
End Function

 
всем спасибо, кто откликнулся! авось эти решения пригодятся не только мне! )
 
Скорее всего решение только под исходные данные
Страницы: 1
Читают тему (гостей: 1)
Наверх