Можно ли использовать СЧЁТЕСЛИ с функцией значений диапазона?

Допустим, у меня есть список дат, начинающийся с A1 и проходящий через ...

1/3/2014 2/5/2014 5/5/2015 8/10/2016 ...

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

Я не думаю, что это такое уж плохое решение, но для этого требуется целая куча дополнительных ячеек только для подсчета месяцев в моей электронной таблице, что на самом деле не нужно ни для чего другого.

Итак, в принципе, есть ли способ сделать что-то в строке = СЧЁТЕСЛИ (МЕСЯЦ (диапазон), 5), чтобы подсчитать, например, количество раз, когда что-то происходит в мае?


person Free    schedule 09.12.2013    source источник


Ответы (1)


Нет, вы не можете этого сделать, функция COUNTIF требует диапазона в качестве первого аргумента - любая операция с диапазоном (например, использование функции MONTH) преобразует этот диапазон в массив, который COUNTIF не принимает

Возможная альтернатива - использовать SUMPRODUCT, например.

=SUMPRODUCT((MONTH(range)=5)+0)

или COUNTIFS нравится это

=COUNTIFS(range,">="&Z1,range,"<"&EOMONTH(Z1,0)+1)

где Z1 - 1-е число месяца для подсчета, например 1 мая 2013 г.

Конечно, версия SUMPRODUCT не учитывает год (хотя вы можете добавить это), в то время как COUNTIFS делает

Объяснение

В SUMPRODUCT, когда вы используете выражение типа MONTH(range)=5, которое возвращает "массив" из TRUE/FALSE значений, например _11 _...., но SUMPRODUCT здесь только суммирует числа, поэтому нам нужен способ "принуждать" TRUE к 1 и FALSE к 0. Вы может сделать это с помощью любой математической операции, которая не меняет значение, например +0, * 1 или вы можете добавить - вперед следующим образом:

=SUMPRODUCT(--(MONTH(range)=5))

так что мы получаем что-то вроде

=SUMPRODUCT(--({TRUE;FALSE;FALSE;TRUE}))

... и это становится

=SUMPRODUCT({1;0;0;1})

а затем СУММПРОИЗВ суммирует эти значения, чтобы получить 2, то есть количество дат в мае.

SUMPRODUCT предпочтительнее SUM просто потому, что вам не нужно "вводить массив" в формулу с помощью CTRL + SHIFT + ENTER

См. здесь для хорошего объяснения SUMPRODUCT и его множества применений.

person barry houdini    schedule 09.12.2013
comment
Я собирался предложить формулу массива, но sumproduct намного лучше. - person gtwebb; 09.12.2013
comment
Большое спасибо за ответ, в целом он имеет смысл, но не могли бы вы объяснить, почему этот +0 необходим в конце вашей функции СУММПРОИЗВ? Я предполагаю, что это что-то вроде принуждения его к желаемому типу (int). Это правильно или что-то еще? - person Free; 09.12.2013
comment
+0 в этом контексте приводит значение ИСТИНА / ЛОЖЬ к значению 1/0, потому что СУММПРОИЗВ имеет дело только с числами - я дал более подробное объяснение в своем ответе. - person barry houdini; 10.12.2013