Excel countif, где критерии ссылаются на подсчитываемый диапазон?

У меня есть таблица Excel с тремя столбцами (C, D, E): R, G, B.

Каждый столбец будет иметь значение в диапазоне от 0 до 255. Каждый набор из трех значений (каждая строка) представляет цвет. Оттенок серого определяется тем, что все три столбца (для данной строки) имеют одинаковое значение. Есть 554 строки (не то, чтобы это имело значение для решения).

Можно ли без добавления дополнительных столбцов использовать countif() для подсчета оттенков серого в диапазоне (C:E).

Я уже пробовал несколько вариантов (основанных на решениях разных проблем здесь, в SE) - ни один из них не работает:

=COUNTIF(C:E,AND(C:C=D:D,D:D=E:E))

=COUNTIF(C:E,AND(OFFSET(C:E,0,0,1,1)=OFFSET(C:E,0,1,1,1),OFFSET(C:E,0,0,1,1)=OFFSET(C:E,0,2,1,1)))

=COUNTIF(C:E,AND(INDEX(C:C,ROW())=INDEX(D:D,ROW()),INDEX(D:D,ROW())=INDEX(E:E,ROW())))

Я считаю, что должно быть решение - я просто еще не наткнулся на него. Любые идеи были бы хорошы. Если countif() — неправильная функция для использования, то я, очевидно, открыт для альтернативных предложений.


person Peter Abolins    schedule 28.01.2014    source источник


Ответы (1)


Ну, вы можете использовать SUMPRODUCT:

=SUMPRODUCT((C2:C555=D2:D555)*(C2:C555=E2:E555))

C2:C555=D2:D555 проверяет, равна ли каждая ячейка в C2:C555 соответствующей ячейке в D2:D555, и возвращает массив TRUE и/или FALSE.

C2:C555=E2:E555 делает то же самое, но со столбцами C и E.

Умножение значений TRUE и FALSE дает массив (другой массив) из 1 и 0, где только TRUE*TRUE дает 1.

Затем SUMPRODUCT суммирует каждую из отдельных единиц и нулей. Вместо этого вы можете использовать SUM, но для этого потребуется ввести формулу массива (например, нажмите Ctrl+Shift+Enter, чтобы она работала правильно).

person Jerry    schedule 28.01.2014
comment
Это отлично. И я ценю объяснение. Теперь мне просто нужно выяснить, как я могу избежать ограничения диапазона (например, c:c вместо c2:c555), но, по сути, это то, что я искал. - person Peter Abolins; 29.01.2014
comment
На всякий случай, если кому-то интересно, я дополнил решение, данное @Jerry, для решения случая неизвестного диапазона. =СУММПРОИЗВ((НЕ(C:C=))*(C:C=D:D)*(D:D=E:E)) - person Peter Abolins; 29.01.2014
comment
@PeterAbolins Ах, да, если у вас есть пробелы, они также будут считаться «одинаковыми значениями во всех столбцах». Единственная проблема с SUMPRODUCT заключается в том, что это довольно дорогая функция и может снизить производительность, когда у вас действительно большой диапазон. - person Jerry; 29.01.2014