В столбце встречается такой текст: "546f утро вторпол11, сон23, 345f." "утро вторпол11," - это 11 утра, а "сон23," - это 23 вечера. Формула должна как-то вычислить - сколько длился сон - в часах.
То есть нужно взять отметку 23:00 предыдущего дня и вычесть из нее 11:00 - должно получится в общей сумме 12часов. Как это сделать формулой - и записать в ячейке напротив столбца B5:B20 ?
Вечер добрый.
В столбце встречается такой текст: "546f утро вторпол11, сон23, 345f." "утро вторпол11," - это 11 утра, а "сон23," - это 23 вечера. Формула должна как-то вычислить - сколько длился сон - в часах.
То есть нужно взять отметку 23:00 предыдущего дня и вычесть из нее 11:00 - должно получится в общей сумме 12часов. Как это сделать формулой - и записать в ячейке напротив столбца B5:B20 ?Бонифаций
Ну вот первое значение - там где 10 (в ячейке D5). В тексте: "...ночь перпол2,сон16, ..." То есть лег спать в 16 часов дня, проснулся в 2 часа ночи. Это значит что между 16 часами дня - и 2 часами ночи - прошло 10 часов.
В ячейку D5 - вписывается число 10. Вот примерно так.
Я прикрепил файл с примером - что должно быть в столбце D
Pelena, неправильно там записал....
Ну вот первое значение - там где 10 (в ячейке D5). В тексте: "...ночь перпол2,сон16, ..." То есть лег спать в 16 часов дня, проснулся в 2 часа ночи. Это значит что между 16 часами дня - и 2 часами ночи - прошло 10 часов.
В ячейку D5 - вписывается число 10. Вот примерно так.
Я прикрепил файл с примером - что должно быть в столбце DБонифаций
Function sleep(t As String) If t = "" Then sleep = t Exit Function End If
With CreateObject("vbscript.regexp") .Global = True .Pattern = "пол(\d+)|сон(\d+)" If .test(t) Then If Not IsEmpty(.Execute(t)(0).Submatches(0)) Then sleep = .Execute(t)(1).Submatches(1) - .Execute(t)(0).Submatches(0) Else sleep = 24 - .Execute(t)(0).Submatches(1) + .Execute(t)(1).Submatches(0) End If End If End With End Function
[/vba]
Вариант пользовательской функцией [vba]
Код
Function sleep(t As String) If t = "" Then sleep = t Exit Function End If
With CreateObject("vbscript.regexp") .Global = True .Pattern = "пол(\d+)|сон(\d+)" If .test(t) Then If Not IsEmpty(.Execute(t)(0).Submatches(0)) Then sleep = .Execute(t)(1).Submatches(1) - .Execute(t)(0).Submatches(0) Else sleep = 24 - .Execute(t)(0).Submatches(1) + .Execute(t)(1).Submatches(0) End If End If End With End Function