=COUNTIFS(F3:K11, "Math", F4:K12, "1a")
который уже был представлен fitch496 , это хорошее начало. (Примечание: некоторые локали используют ;
для разделения параметров функции; другие используют ,
.) У него есть одна возможная проблема: он будет подсчитывать пары ячеек, где «Math» находится в строке с четным номером, а «1a» ниже его в нечетном пронумерованный ряд (Хотя вопрос не касается этой проблемы, на рисунке показано, что такие пары не должны учитываться.)
Чтобы решить эту проблему, я начал с преобразования приведенной выше формулы в форму, которая дает тот же результат, но с использованием SUMPRODUCT
:
=SUMPRODUCT(--(F3:K11="Math"), --(F4:K12="1a"))
Здесь мы используем стандартные приемы, предшествующие булевому выражению, --
чтобы превратить TRUE в 1 и FALSE в 0, и использовать SUMPRODUCT
неявное умножение в качестве логического AND. Затем я расширил это до
=SUMPRODUCT(--(F3:K11="Math"), --(F4:K12="1a"), --(MOD(ROW(F3:K11),2)=1))
чтобы проверить, что «Math» появился в строке с нечетным номером ( MOD(ROW(…),2)=1
). Это не удалось, потому что Excel, похоже, работает ROW(F3:K11)
так же, как ROW(3:11)
и создание линейного массива из 9 значений, а не прямоугольного массива из 54 значений. (IMNSHO, это ошибка в Excel.) Я обнаружил, что могу исправить это, заставив его учитывать столбцы, а затем игнорируя их:
=SUMPRODUCT(--(F3:K11="Math"), --(F4:K12="1a"), --(MOD(ROW(F3:K11)+0*COLUMN(F3:K11),2)=1))
который оценивает номер столбца каждой ячейки ( COLUMN(…)
), а затем умножает его на 0. Это работает. Иллюстрация ниже такая же, как данные ОП в вопросе, но с добавлением «Математика» и «1а» в ячейках J8
и J9
.
Формула fitch496 COUNTIFS
(которую я включил в начало моего ответа) и моя простая SUMPRODUCT
формула учитывают этот смещенный «Математический 1a» и дают в общей сложности 3; моя последняя SUMPRODUCT
формула игнорирует неверно выровненную «Математическую 1а» и дает в общей сложности 2.
(См. Источник этого поста для копирования и вставки дружественной копии выше.)
Моя формула может быть немного упрощена:
--(MOD(row number,2)=1)
берет номер строки по модулю 2 и проверяет, равен ли он 1. Если это так, сравнительный тест выдает TRUE, который преобразуется в 1 с помощью --
. Это не 1, это должно быть 0; сравнение с 1 дает ЛОЖЬ, которая преобразуется в 0 с помощью --
. Мы можем обойтись без логических операций (проверка качества и затем применение --
к логическому результату) и просто использовать .MOD(row number,2)
--(Boolean)
это просто . Самый внутренний преобразует ИСТИНА в 1 и ЛОЖЬ в 0, но затем он превращает 1 в -1. Затем внешний преобразует -1 обратно в 1. Поскольку мы берем произведение двух факторов, внешние s взаимно компенсируют друг друга, поэтому мы можем их опустить.-(-(Boolean))
-
-
--
-
Таким образом, окончательная, упрощенная формула
=SUMPRODUCT(-(F3:K11="Math"), -(F4:K12="1a"), MOD(ROW(F3:K11)+0*COLUMN(F3:K11),2))