Сравнение времени в 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))
Другие вопросы по тегам