Сравнение времени в Excel, отформатированного как текст (включая отрицательное время) - PullRequest
0 голосов
/ 22 мая 2018

Необходимо отфильтровать все строки, которые имеют отрицательное время или время менее 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 Ответ

0 голосов
/ 22 мая 2018

Если в столбце A указаны значения в виде текста, то в B1 введите:

=IF(LEFT(A1,1)="-",-TIMEVALUE(MID(A1,2,99)),TIMEVALUE(A1))

и скопируйте вниз:

enter image description here

Как видно из рисунка выше, если вы хотите, чтобы отображалось только время больше или равное 20 часам, установите автофильтр в столбце помощника больше, чемили равно .8333333

Все малые и отрицательные времена будут скрыты.

РЕДАКТИРОВАТЬ # 1:

Как только часы превысят 24, TIMEVALUE() становится ненадежным.Для этого следует использовать вместо:

=IF(LEFT(A1,1)="-",-TIMEVALUE(MID(A1,2,99)),LEFT(A1,2)/24+RIGHT(A1,2)/(24*60))
...