
У меня есть рабочий лист со следующими входными данными:
0900-1800
0900-1800
DAYOFF
0900-1800
0900-1800
У меня вопрос: как я могу посчитать только диапазоны, содержащие только время? Например, данные выше должны иметь значение 4, потому что в них есть только 4 дня с числами.
решение1
Вы можете добавить второй столбец с формулой вида
=IF(ISNUMBER(VALUE(LEFT(A1,1))),1,0)
который определит, является ли первый символ ячейки A1
числовым символом, который в вашем примере будет соответствовать рабочему дню. Рабочие дни будут представлены 1
в новом столбце, другие дни — 0
. Обратите внимание, что эта формула предполагает, что ваши рабочие днивсегданачните поле с числа, а бесплатные дни никогда не бывают бесплатными!
Затем вы можете просуммировать этот новый столбец, чтобы получить общее количество рабочих дней.
Вариант 2
Как упоминалось в комментариях, вы можете попробовать использовать функцию COUNTIF
, которая в принципе позволяет подсчитывать ячейки с определенными характеристиками без необходимости во временном столбце. Проблема в том, что, насколько мне известно, вы не можете использовать всю гибкость отдельных формул, поэтому я не могу придумать версию, явно проверяющую ячейки, начинающиеся с числового символа. Я нашел решение, которое работает для вашего примера:
=COUNTIF(A1:A7;"<A")
который (я думаю) подсчитывает ячейки, первый символ которых имеет меньший код ASCII, чем буква "A". Обратите внимание, что сюда входит много небуквенных символов, в частности space
!
Вариант 3включает в себя использование формулы массива, вдохновленнойСовет дня на MrExcel.com:
=SUM((A1:A5>="0")*(A1:A5<="9")*1)
Это необходимо ввести какформула массива, т. е. нажав Ctrl+Shift+Enter
вместо просто Enter.Это решение эквивалентно первому, которое я привел, но без дополнительного столбца.Обратите внимание, что дополнительный столбец по-прежнему имеет то преимущество, что вы можете вручную проверить для каждого дня по отдельности, что он был классифицирован правильно.