Сравнение времени в Excel, отформатированного как текст (включая отрицательное время)
Необходимо отфильтровать все строки, которые имеют отрицательное время или время менее 20 часов. Продолжительность времени падает до -300 часов. Поскольку я импортирую эти данные, он импортирует как =TEXT("-20:42","[h]:mm")
или же =TEXT("3:29","[h]:mm")
Создание собственного фильтра произвело 0 выходов.
Прямо сейчас я добавил столбец в мою таблицу с этой формулой
=IF(ISNUMBER(SEARCH("-*",Table15[[#This Row],[Resolve Time To Go]])),"Breech", "No Breech")
Это отлично работает для отрицательных значений, но у меня возникают трудности с вытягиванием значений от 0 до 20 часов.
Эта формула возвращает true для положительных значений, но не останавливается на 20
=IF(VALUE(Table15[[#This Row],[Resolve Time To Go]])<TIMEVALUE(20), "Breech", "No Breech")
Я не против, если мне понадобится создать пару дополнительных столбцов для получения этих данных, так как я буду просто использовать их для сводных таблиц, однако было бы неплохо, если бы это можно было сделать в 1 столбце. Я попытался объединить две функции, но у меня появилось всплывающее окно, в котором говорилось, что слишком много логических утверждений (?).
Это также в конечном итоге должно быть включено в макрос.
1 ответ
Если у вас есть в столбце A значения времени в тексте, то в B1 введите:
=IF(LEFT(A1,1)="-",-TIMEVALUE(MID(A1,2,99)),TIMEVALUE(A1))
и скопировать вниз:
Как видно из рисунка выше, если вы хотите отображать только время больше или равное 20 часам, установите автофильтр в столбце помощника, чтобы он был больше или равен 0,8333333.
Все маленькие и отрицательные времена будут скрыты.
EDIT # 1:
Как только часы превысят 24, TIMEVALUE()
становится ненадежным. Для этого следует использовать вместо этого:
=IF(LEFT(A1,1)="-",-TIMEVALUE(MID(A1,2,99)),LEFT(A1,2)/24+RIGHT(A1,2)/(24*60))