Excel: как подсчитать количество ячеек, которые содержат «X» И как ячейка выше содержит «Y»

2

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

Вот пример изображения моего листа:
Образец листа

Я хочу посчитать, сколько раз ячейка в диапазоне содержит «1a» И ячейка над ячейкой с 1a содержит «Math». Очевидно, этот пример тривиален, но я решил, что логика решения этой проблемы будет такой же, как если бы это был более крупный лист с моими данными, полностью его заполняющими.

В этом примере ответ должен быть дважды. Как мне построить формулу для условного подсчета этого типа?

mpalaska
источник

Ответы:

2

Вы можете использовать формулу COUNTIFS. Это позволяет вам указать несколько критериев. Используя пример по pat2015, если данные находятся в диапазоне A3: J8, формула должна быть

=COUNTIFS(A3:J7;"Math";A4:J8;"1a")

(обратите внимание на смещение на одну строку между критериями)

Скриншот

fitch496
источник
Это хороший ответ. Одна из возможных проблем: он будет подсчитывать пары ячеек, где «1a» находится в строке с нечетным номером, а «Math» над ним в строке с четным номером. (Хотя вопрос не говорит об этой проблеме, на рисунке показано, что такие пары не должны учитываться.)
Скотт,
1
примечание: этот ответ написан в локали (в основном в Европе), где ,используется десятичная точка и ;используется для разделения списка
phuclv
1

Я предлагаю решение, которое требует одну колонку помощников. Предполагая, что ваши данные расположены в ячейках A3: J8, используйте столбец K в качестве помощника и поместите в него следующую формулу массива

{=SUM(IF($A4:$J4="1a",IF($A3:$J3="Math",1,0)))}

Поместите формулу без фигурных скобок, а затем в строке формул нажмите CTRL + SHIFT + ENTER, чтобы создать формулу массива. Это дает счет «1a» со словом «Math» над этим. Начните с К4 и потяните вниз. Для альтернативных строк он вернет 0, но это не должно иметь значения. Теперь просто СУММА столбца помощников. Для этого вы можете использовать простую функцию SUM. Там могут быть более разумные способы достичь этого без столбца Helper или можно даже использовать макросы VBA.

введите описание изображения здесь

patkim
источник
Это выглядит полезным для многих ситуаций.
Сверхразум
0

Если вы переформатируете данные, чтобы Math и 1a находились в одной ячейке:

=G5&" "&G6

тогда вы можете использовать countif:

=COUNTIF($F$15:$K$18,N15)

введите описание изображения здесь

Сэр Аделаида
источник
0

Вы можете использовать:

=SUMPRODUCT(--(F3:K12&F2:K11="1a"&"Math"))

Вы должны использовать начальный массив (F3: K12) в первой ссылке и после &Вашей ссылки меньше одной строки (добавьте одну строку вверх и меньше одной строки вниз) (F2: K11).
В этом случае (F3:K12&F2:K11="1a"&"Math")будет возвращаться, Trueесли строки в F3: K12 = «1а» и F2: K11 = «Math» перед условием будет возвращать 1 , если это SUMPRODUCT будет сумма (1,1,0 ...) Какой счетчик
--True

Ясс
источник
SUMPRODUCTэто хороший инструмент для этой работы, но вы могли бы использовать его лучше. (1) Вы не должны смотреть в строке 2; Там нет ничего интересного. Вы должны посмотреть на диапазоны строк 4:12 и 3:11. (2) Как и многие другие ответы здесь, ваш подсчитает пары ячеек, где «1a» находится в строке с нечетным номером, а «Math» над ним в строке с четным номером. (Хотя вопрос не относится к этой проблеме, на рисунке показано, что такие пары не должны учитываться.) (3) Из-за того, как вы используете &, ваш ответ будет подсчитывать пары ячеек, в которых одна содержит «1 утра», а другая - одну. выше это содержит "ath".
Скотт
0
=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))
Скотт
источник
-1

Если вы хотите получить общее значение, которое означает, что сколько раз Math & 1a записывается по одной формуле, это должно быть

= COUNTIF (B86; E91, "Math") + Countif (B86: E91, "1a")

Если хотите посчитать отдельно, то один и тот же счет, формула дважды.

Раджеш С
источник
1
Вопрос стремится подсчитать случаи возникновения комбинированного условия «математика» + «1а»; результат должен быть 2 для примера в вопросе. Я думаю, что ваша формула будет производить 6.
fixer1234
@Mpalaska ,, ваш вопрос был: «Я хочу посчитать, сколько раз ячейка в диапазоне содержит« 1a »И ячейка над ячейкой с 1a содержит« Math ». И соответственно я предложил формулу. Теперь Пожалуйста, укажите вашу потребность, которую я дам вам Решение. Чтобы сосчитать Происшествие, Каунтиф - лучшая формула
Раджеш С
@RajeshS: Хотя COUNTIFэто хорошая функция, она не самая лучшая для этой проблемы. Fixer1234 прав: вы считаете не то, что нужно.
Скотт
@ Скотт, возможно, мне кажется, что подсчет появления необходим, теперь вместо старой формулы это следует использовать, = Countifs (B2: B20, "1a", C2: C20, "Math"). .
Раджеш С
1
@Rajesh: И, если вы исправите это, чтобы параметры были в правильном порядке («Math» выше «1a», а не справа ), то у вас будет первая строка моего ответа .
Скотт