Excel COUNTIF и COUNTIFS с логикой ИЛИ

  • Поделись Этим
Michael Brown

В учебнике объясняется, как использовать функции COUNTIF и COUNTIFS Excel для подсчета ячеек с несколькими условиями OR, например, если ячейка содержит X, Y или Z.

Как всем известно, функция Excel COUNTIF предназначена для подсчета ячеек на основе только одного критерия, в то время как COUNTIFS оценивает несколько критериев с помощью логики AND. Но что если ваша задача требует логики OR - когда задано несколько условий, любое из которых может совпасть и быть включено в подсчет?

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

Функция Excel COUNTIF - подсчитывает ячейки с одним критерием.

Функция Excel COUNTIFS - подсчитывает ячейки с несколькими критериями AND.

Теперь, когда все на одной волне, давайте начнем:

    Подсчет ячеек с условиями OR в Excel

    В данном разделе рассматривается простейший сценарий - подсчет клеток, удовлетворяющих любому (хотя бы одному) из указанных условий.

    Формула 1. КОУНТИФ + КОУНТИФ

    Самый простой способ подсчета ячеек, имеющих то или иное значение (Countif a или b ) - это написать обычную формулу COUNTIF для подсчета каждого элемента по отдельности, а затем сложить результаты:

    КОУНТИФ( ассортимент , критерий1 ) + COUNTIF( ассортимент , критерий2 )

    В качестве примера выясним, сколько ячеек в столбце A содержат либо "яблоки", либо "бананы":

    =COUNTIF(A:A, "яблоки") + COUNTIF(A:A, "бананы")

    В реальных рабочих листах, чтобы формула работала быстрее, рекомендуется оперировать диапазонами, а не целыми столбцами. Чтобы не обновлять формулу при каждом изменении условий, введите интересующие вас элементы в заранее определенные ячейки, например F1 и G1, и ссылайтесь на эти ячейки. Например:

    =COUNTIF(A2:A10, F1) + COUNTIF(A2:A10, G1)

    Эта техника хорошо работает для пары критериев, но добавление трех или более функций COUNTIF вместе сделает формулу слишком громоздкой. В этом случае лучше использовать одну из следующих альтернатив.

    Формула 2. COUNTIF с константой массива

    Вот более компактная версия формулы SUMIF с условиями OR в Excel:

    SUM(COUNTIF( ассортимент , { критерий1 , критерий2 , критерий3 , ...}))

    Формула строится таким образом:

    Сначала вы упаковываете все условия в массив констант - отдельные элементы разделяются запятыми, а массив заключен в фигурные скобки, например {"яблоки", "бананы", "лимоны"}.

    Затем, вы включаете константу массива в критерии аргумент обычной формулы COUNTIF: COUNTIF(A2:A10, {"яблоки", "бананы", "лимоны"})

    Наконец, исказите формулу COUNTIF в функции SUM. Это необходимо потому, что COUNTIF вернет 3 отдельных подсчета для "яблок", "бананов" и "лимонов", а вам нужно сложить эти подсчеты вместе.

    Наша полная формула выглядит следующим образом:

    =SUM(COUNTIF(A2:A10,{"яблоки", "бананы", "лимоны"}))

    Если вы предпочитаете предоставить свои критерии в виде ссылки на диапазон Чтобы формула стала формулой массива, нужно ввести ее с помощью Ctrl + Shift + Enter. Например:

    =SUM(COUNTIF(A2:A10,F1:H1))

    Обратите внимание на фигурные скобки на скриншоте ниже - это самый очевидный признак формулы массива в Excel:

    Формула 3. SUMPRODUCT

    Другой способ подсчета ячеек с помощью логики ИЛИ в Excel - использовать функцию SUMPRODUCT таким образом:

    SUMPRODUCT(1*( ассортимент ={ критерий1 , критерий2 , критерий3 , ...}))

    Чтобы лучше представить логику, это также можно записать как:

    SUMPRODUCT(( ассортимент = критерий1 ) + ( ассортимент = критерий2 ) + ...)

    Формула проверяет каждую ячейку в диапазоне по каждому критерию и возвращает TRUE, если критерий выполнен, FALSE в противном случае. В качестве промежуточного результата вы получаете несколько массивов значений TRUE и FALSE (количество массивов равно количеству ваших критериев). Затем элементы массива в одной позиции складываются вместе, то есть первые элементы во всех массивах, вторые элементы и так далее.Операция сложения преобразует логические значения в числа, так что в итоге вы получаете один массив из 1 (один из критериев соответствует) и 0 (ни один из критериев не соответствует). Поскольку все критерии проверяются по одним и тем же ячейкам, в результирующем массиве не может появиться ни одно другое число - только один исходный массив может иметь TRUE в определенной позиции, остальные будут иметь FALSE. Наконец, SUMPRODUCTскладывает элементы полученного массива, и вы получаете желаемый счетчик.

    Первая формула работает аналогичным образом, с той разницей, что она возвращает один двухмерный массив значений TRUE и FALSE, которые вы умножаете на 1, чтобы преобразовать логические значения в 1 и 0, соответственно.

    Применительно к нашему набору данных формулы имеют следующий вид:

    =SUMPRODUCT(1*(A2:A10={"яблоки", "бананы", "лимоны"}))

    Или

    =SUMPRODUCT((A2:A10="яблоки") + (A2:A10="бананы") + (A2:A10="лимоны"))

    Замените жестко закодированную константу массива ссылкой на диапазон, и вы получите еще более элегантное решение:

    =SUMPRODUCT(1*( A2:A10=F1:H1))

    Примечание. Функция SUMPRODUCT медленнее, чем COUNTIF, поэтому эту формулу лучше использовать на относительно небольших наборах данных.

    Считайте ячейки с помощью логики OR, а также AND

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

    В качестве примера, давайте получим подсчет "доставленных" "яблок", "бананов" и "лимонов". Как это сделать? Для начала переведем наши условия на язык Excel:

    • Колонка А: "яблоки" или "бананы" или "лимоны"
    • Колонка С: "доставлено"

    Если посмотреть с другой стороны, то нам нужно подсчитать строки с "яблоками и доставленными" ИЛИ "бананами и доставленными" ИЛИ "лимонами и доставленными". Таким образом, задача сводится к подсчету ячеек с 3 условиями ИЛИ - точно так же, как мы делали в предыдущем разделе! Единственное отличие заключается в том, что вы будете использовать COUNTIFS вместо COUNTIF для оценки критерия И в каждом условии ИЛИ.

    Формула 1. КОУНТИФЫ + КОУНТИФЫ

    Это самая длинная формула, которую легче всего написать :)

    =COUNTIFS(A2:A10, "яблоки", C2:C10, "доставлено") + COUNTIFS(A2:A10, "бананы", C2:C10, "доставлено")) + COUNTIFS(A2:A10, "лимоны", C2:C10, "доставлено"))

    На скриншоте ниже показана та же формула со ссылками на ячейки:

    =COUNTIFS(A2:A10, K1, C2:C10, K2) + COUNTIFS(A2:A10, L1, C2:C10, K2) + COUNTIFS(A2:A10, M1,C2:C10, K2)

    Формула 2. COUNTIFS с константой массива

    Более компактная формула COUNTIFS с логикой AND/OR может быть создана путем упаковки критериев OR в константу массива:

    =SUM(COUNTIFS(A2:A10, {"яблоки", "бананы", "лимоны"}, C2:C10, "доставлено"))

    При использовании ссылки на диапазон для критериев необходима формула массива, заполняемая нажатием Ctrl + Shift + Enter :

    =SUM(COUNTIFS(A2:A10,F1:H1,C2:C10,F2))

    Совет. При необходимости вы можете использовать подстановочные знаки в критериях любых формул, рассмотренных выше. Например, для подсчета всех видов бананов, таких как "зеленые бананы" или "бананы с золотыми пальцами", можно использовать эту формулу:

    =SUM(COUNTIFS(A2:A10, {"яблоки", "*бананы*", "лимоны"}, C2:C10, "доставлено"))

    Аналогичным образом можно построить формулу для подсчета ячеек на основе других типов критериев. Например, чтобы получить подсчет "яблок", "бананов" или "лимонов", которые "доставлены" и сумма которых больше 200, добавьте к COUNTIFS еще одну пару диапазон критериев/критерий:

    =SUM(COUNTIFS(A2:A10, {"яблоки", "*бананы*", "лимоны"}, C2:C10, "доставлено", B2:B10, ">200"))

    Или используйте эту формулу массива (вводится с помощью Ctrl + Shift + Enter ):

    =SUM(COUNTIFS(A2:A10,F1:H1,C2:C10,F2, B2:B10, ">"&F3))

    Подсчет клеток с несколькими условиями ОР

    В предыдущем примере вы узнали, как проверить один набор условий ИЛИ. Но что если у вас есть два или более наборов, и вы хотите получить общее количество всех возможных отношений ИЛИ?

    В зависимости от того, сколько условий вам нужно обработать, вы можете использовать либо COUNTIFS с константой массива, либо SUMPRODUCT с ISNUMBER MATCH. Первый вариант относительно прост в построении, но он ограничен только 2 наборами условий OR. Второй может оценивать любое количество условий (разумное число, конечно, учитывая ограничение Excel на 255 аргументов и 8192 символа общей длины формулы),но может потребоваться некоторое усилие, чтобы понять логику формулы.

    Подсчет клеток с 2 наборами условий ИЛИ

    Когда приходится иметь дело только с двумя наборами критериев ИЛИ, просто добавьте еще одну константу массива к формуле COUNTIFS, рассмотренной выше.

    Для того чтобы формула работала, необходимо одно небольшое, но критическое изменение: использовать горизонтальный массив (элементы разделены запятыми) для одного набора критериев и вертикальный массив (элементы, разделенные точкой с запятой) для другого. Это указывает Excel на "сопряжение" или "перекрестный расчет" элементов в двух массивах и возвращает двумерный массив результатов.

    В качестве примера, давайте посчитаем "яблоки", "бананы" или "лимоны", которые либо "доставлены", либо "находятся в пути":

    =SUM(COUNTIFS(A2:A10, {"яблоки", "бананы", "лимоны"}, B2:B10, {"доставлено"; "в пути"}))

    Обратите внимание на точку с запятой во второй константе массива:

    Поскольку Excel является 2-димензиональной программой, невозможно построить 3-димензиональный или 4-димензиональный массив, и поэтому эта формула работает только для двух наборов критериев ИЛИ. Чтобы считать с большим количеством критериев, вам придется перейти к более сложной формуле SUMPRODUCT, о которой рассказывается в следующем примере.

    Подсчет клеток с несколькими наборами условий ИЛИ

    Чтобы подсчитать ячейки с более чем двумя наборами критериев ИЛИ, используйте функцию SUMPRODUCT вместе с ISNUMBER MATCH.

    Например, давайте подсчитаем количество "яблок", "бананов" или "лимонов", которые либо "доставлены", либо "находятся в пути" и упакованы либо в "мешок", либо в "лоток":

    =SUMPRODUCT(ISNUMBER(MATCH(A2:A10,{"яблоки", "бананы", "лимоны",0))*.

    ISNUMBER(MATCH(B2:B10,{"сумка", "лоток"},0))*

    ISNUMBER(MATCH(C2:C10,{"доставлено", "в пути",0)))

    В сердце формулы функция MATCH проверяет критерии, сравнивая каждую ячейку в указанном диапазоне с соответствующей константой массива. Если совпадение найдено, она возвращает относительную позицию значения в массиве, N/A - в противном случае. ISNUMBER преобразует эти значения в TRUE и FALSE, которые равны 1 и 0 соответственно. SUMPRODUCT переходит к следующему шагу и перемножает массивы.элементов. Поскольку умножение на ноль дает ноль, выживают и суммируются только те ячейки, которые имеют 1 во всех массивах.

    На скриншоте ниже показан результат:

    Вот как вы используете функции COUNTIF и COUNTIFS в Excel для подсчета ячеек с несколькими условиями AND, а также OR. Чтобы поближе познакомиться с формулами, рассмотренными в этом уроке, вы можете скачать наш образец рабочей книги ниже. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!

    Практическая тетрадь

    Excel COUNTIF с условиями OR - примеры (файл.xlsx)

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.