Здравствуйте. В исходнике есть время процесса, которое представлено примерно в таком виде 1д5ч30мин, 5ч, 1м3д34мин и т.п. Это значение нужно использовать в качестве фильтра в дальнейшей работе с таблицей. Хотел преобразовать эти значения в дни. Но составить формулу ЕСЛИ не осилил. Попробовал через условное форматирование, но это получается громоздко. Нужно как минимум выделить все ячейки, которые будут содержать значения, включающие от 1 до 3 дней. Это преобразование надо будет переносить на другие книги.
Подскажите, пожалуйста, направление в котором нужно искать.
ищите автора этих шедевральных данных, предложите ему преобразовать их в стандартные даты к стандартным датам вы сможете применить ЛЮБЫЕ стандартные средства работы с датами (и фильтры в том числе)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
Sub Tabl_Days()
Dim i As Long
Dim iLastRow As Long
Dim iDays As Integer
Dim iHour As Integer
Dim iMin As Integer
Dim TimeInDays As Double
iLastRow = Cells(Rows.Count, 1).End(xlUp).Row
With CreateObject("VBScript.RegExp")
.Pattern = "(\d+д)?(\d+ч)?(\d+мин)?"
For i = 2 To iLastRow
iDays = Val(.Execute(Cells(i, "A"))(0).SubMatches(0))
iHour = Val(.Execute(Cells(i, "A"))(0).SubMatches(1))
iMin = Val(.Execute(Cells(i, "A"))(0).SubMatches(2))
TimeInDays = WorksheetFunction.RoundUp((iDays + iHour / 24 + iMin / 24 / 60), 0)
Cells(i, "C") = TimeInDays
Next
End With
End Sub
Цитата
выделить все ячейки, которые будут содержать значения, включающие от 1 до 3 дней.
не надо преобразовывать, нужно отсечь все что больше 3х дней =IFERROR(LEFT([@[Общее время]];FIND("д";[@[Общее время]])-1);1)+ISNUMBER(SEARCH("д??";[@[Общее время]])) Ну разве что прибавить контроль на совсем пусто.