=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
.
Формула COUNTIFS
fitch496 (которую я включаю в начало моего ответа) и моя простая формула SUMPRODUCT
оба считают этот смещенный «Математический 1a» и дают всего 3; моя последняя формула SUMPRODUCT
игнорирует неверно выровненную «Математическую 1a» и дает в итоге 2.
(См. Источник этого поста для копирования и вставки дружественной копии выше.)
Моя формула может быть немного упрощена:
--(MOD(row number,2)=1)
берет номер строки по модулю 2 и проверяет, равен ли он 1.
Если это так, тест сравнения дает значение ИСТИНА, которое преобразуется в 1 с помощью --
.
Это не 1, это должно быть 0; сравнение с 1 дает ЛОЖЬ, которая преобразуется в 0 с помощью --
.
Мы можем обойтись без логических операций (проверка качества и затем применение --
к логическому результату) и просто использовать MOD(row number,2)
.
--(Boolean)
- это просто -(-(Boolean))
.
Самый внутренний -
преобразует TRUE в 1 и FALSE в 0, но затем он превращает 1 в -1.
Тогда внешний -
преобразует -1 обратно в 1.
Поскольку мы берем произведение двух --
факторов, внешняя -
s компенсируют друг друга, так что мы можем опустить их.
Таким образом, окончательная, упорядоченная формула
=SUMPRODUCT(-(F3:K11="Math"), -(F4:K12="1a"), MOD(ROW(F3:K11)+0*COLUMN(F3:K11),2))