Защита использования TIMEVALUE внутри SUMPRODUCT от ошибок ввода - PullRequest
0 голосов
/ 09 мая 2018

Первый вопрос здесь, заранее спасибо за ваше терпение и помощь!

У меня есть электронная таблица, которая содержит типы курсов (столбец A, например, «Lec» или «Dis»), номера регистрации (столбец B, как целые числа) и время сеанса (столбец C, временной интервал строки, например, «10:00 AM»). - 01:00 вечера ").

Мне нужно сложить числа учащихся для всех классов определенного типа (скажем, «Lec»), которые заканчиваются раньше определенного времени (скажем, в 15:00). Следующий код выполняет это:

=SUMPRODUCT(--((A2:A8="Lec")), --(TIMEVALUE(MID(B2:B8,11,5)&" "&MID(B2:B8,16,2))<=TIMEVALUE("03:00 PM")), C2:C8)

Проблема в том, что некоторые времена сеанса могут быть пустыми, что отображает "# ЗНАЧЕНИЕ!" ошибка. Насколько я могу сказать, это потому, что TIMEVALUE не может принять пустую ячейку в качестве входных данных, поэтому всякий раз, когда это происходит, это нарушает все. Поэтому в этом случае мне нужно, чтобы формула игнорировала строку и не переходила к различным другим оценкам.

Я пытался защитить содержимое TIMEVALUE с помощью различных условных операторов, например, только учитывая эту строку, если продолжительность сеанса времени правильная (длина = 17). Однако я не смог сделать это успешно. Мои поиски в интернете также не нашли подобной ситуации, достаточной для помощи.

Из-за обстоятельств, связанных с этим проектом, я очень заинтересован в решениях на основе формул, прежде чем рассматривать такие вещи, как изменение общего формата электронной таблицы или добавление фиктивных столбцов для вычислений. Тем не менее, я приветствую любые предложения!

1 Ответ

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

К сожалению, использование AGGREGATE в качестве SUM делает не , пропускает ошибки, если в формуле есть Расчет.Точно так же IFERROR и ISERROR правильно работают только с диапазонами / массивами, когда в формуле массива, а не в SUMPRODUCT.Это самый простой вариант, если вам не нужен столбец расчета.

Однако, еще не все потеряно!Сначала мы уменьшаем ваш SUMPRODUCT до единственного аргумента с * вместо ,:

=SUMPRODUCT(--(A2:A8="Lec")*--(TIMEVALUE(MID(B2:B8,11,5)&" "&MID(B2:B8,16,2))<=TIMEVALUE("03:00 PM"))*C2:C8)

Затем мы меняем это значение с =SUMPRODUCT(X) до =SUM(IFERROR(X,0)):

=SUM(IFERROR(--(A2:A8="Lec")*--(TIMEVALUE(MID(B2:B8,11,5)&" "&MID(B2:B8,16,2))<=TIMEVALUE("03:00 PM"))*C2:C8),0)

Просто не забудьте нажать [Ctrl] + [Shift] + [Enter] вместо просто [Enter]преобразовать в формула массива - формула будет отображаться в {Curly brackets}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...