Excel: подсчет ячеек, содержащих определенный текст (точное и частичное совпадение)

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

В уроке показано, как подсчитать количество ячеек с определенным текстом в Excel. Вы найдете примеры формул для точного совпадения, частичного совпадения и отфильтрованных ячеек.

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

    Как подсчитать ячейки с определенным текстом в Excel

    В Microsoft Excel есть специальная функция для условного подсчета ячеек - функция COUNTIF. Все, что вам нужно сделать, это ввести целевую текстовую строку в поле критерии аргумент.

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

    COUNTIF(диапазон, " текст ")

    Предположим, у вас есть список идентификаторов элементов в A2:A10, и вы хотите подсчитать количество ячеек с определенным идентификатором, скажем, "AA-01". Введите эту строку во второй аргумент, и вы получите эту простую формулу:

    =COUNTIF(A2:A10, "AA-01")

    Чтобы пользователи могли подсчитывать ячейки с любым заданным текстом без необходимости изменять формулу, введите текст в предопределенную ячейку, например D1, и укажите ссылку на ячейку:

    =COUNTIF(A2:A10, D1)

    Примечание. Функция Excel COUNTIF является без учета регистра Чтобы по-разному обрабатывать прописные и строчные символы, используйте эту формулу, чувствительную к регистру.

    Как подсчитать ячейки с определенным текстом (частичное совпадение)

    Формула, рассмотренная в предыдущем примере, точно соответствует критериям. Если в ячейке есть хотя бы один другой символ, например, лишний пробел в конце, это не будет точным совпадением, и такая ячейка не будет учтена.

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

    Подсчет ячеек, содержащих определенный текст в самое начало :

    COUNTIF(диапазон, " текст *")

    Подсчет ячеек, содержащих определенный текст в любое положение :

    COUNTIF(диапазон, "* текст *")

    Например, чтобы найти, сколько ячеек в диапазоне A2:A10 начинаются с "AA", используйте эту формулу:

    =COUNTIF(A2:A10, "AA*")

    Чтобы получить количество ячеек, содержащих "AA" в любой позиции, используйте этот вариант:

    =COUNTIF(A2:A10, "*AA*")

    Чтобы сделать формулы более динамичными, замените закодированные строки ссылками на ячейки.

    Для подсчета ячеек, начинающихся с определенного текста:

    =COUNTIF(A2:A10, D1& "*")

    Подсчет ячеек с определенным текстом в любом месте:

    =COUNTIF(A2:A10, "*"&D1&"*")

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

    Подсчет ячеек, содержащих определенный текст (чувствительный к регистру)

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

    Формула с учетом регистра для подсчета ячеек с определенным текстом (точное совпадение)

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

    SUMPRODUCT(--EXACT(" текст ", ассортимент ))

    Как работает эта формула:

    • EXACT сравнивает каждую ячейку в диапазоне с текстом образца и возвращает массив значений TRUE и FALSE, TRUE представляет точные совпадения, FALSE - все остальные ячейки. Двойной дефис (называемый двойной унарный ) переводит TRUE и FALSE в 1 и 0.
    • SUMPRODUCT суммирует все элементы массива. Эта сумма представляет собой количество единиц, что является количеством совпадений.

    Например, чтобы получить количество ячеек в A2:A10, которые содержат текст в D1 и обрабатывают прописные и строчные буквы как разные символы, используйте эту формулу:

    = СУММАРНЫЙ ПРОДУКТ(--EXACT(D1, A2:A10))

    Формула с учетом регистра для подсчета ячеек с определенным текстом (частичное совпадение)

    Чтобы построить формулу, чувствительную к регистру, которая может найти интересующую текстовую строку в любом месте ячейки, мы используем 3 различные функции:

    SUMPRODUCT(--(ISNUMBER(FIND(" текст ", ассортимент ))))

    Как работает эта формула:

    • Чувствительная к регистру функция FIND ищет целевой текст в каждой ячейке диапазона. Если это удается, функция возвращает позицию первого символа, иначе - ошибку #VALUE! Для ясности нам не нужно знать точную позицию, любое число (в отличие от ошибки) означает, что ячейка содержит целевой текст.
    • Функция ISNUMBER обрабатывает массив чисел и ошибок, возвращаемых FIND, и преобразует числа в TRUE, а все остальное - в FALSE. Двойная унарная (--) преобразует логические значения в единицы и нули.
    • SUMPRODUCT суммирует массив 1 и 0 и возвращает количество ячеек, которые содержат указанный текст в качестве части своего содержимого.

    Чтобы проверить формулу на реальных данных, давайте найдем, сколько ячеек в A2:A10 содержат подстроку, введенную в D1:

    =SUMPRODUCT(--(ISNUMBER(FIND(D1, A2:A10))))

    И это возвращает счетчик 3 (ячейки A2, A3 и A6):

    Как подсчитать отфильтрованные ячейки с определенным текстом

    считать видимые элементы в отфильтрованном списке необходимо использовать комбинацию из 4 или более функций в зависимости от того, хотите ли вы получить точное или частичное совпадение. Чтобы было легче следовать примерам, давайте сначала рассмотрим исходные данные.

    Предположим, у вас есть таблица с Идентификаторы заказов в колонке B и Количество в столбце C, как показано на рисунке ниже. На данный момент вас интересуют только количества, превышающие 1, и вы отфильтровали свою таблицу соответствующим образом. Вопрос в том, как подсчитать отфильтрованные ячейки с определенным идентификатором?

    Формула для подсчета отфильтрованных ячеек с определенным текстом (точное совпадение)

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

    =SUMPRODUCT(SUBTOTAL(103, INDIRECT("A"&ROW(A2:A10))), --(B2:B10=F1)))

    =SUMPRODUCT(SUBTOTAL(103, OFFSET(A2:A10, ROW(A2:A10) - MIN(ROW(A2:A10)),,1)), --(B2:B10=F1))

    Где F1 - текст примера, а B2:B10 - ячейки для подсчета.

    Как работают эти формулы:

    В основе обеих формул лежат 2 проверки:

    1. Определите видимые и скрытые строки. Для этого вы используете функцию SUBTOTAL с параметром function_num Чтобы передать все ссылки на отдельные ячейки в SUBTOTAL, используйте либо INDIRECT (в первой формуле), либо комбинацию OFFSET, ROW и MIN (во второй формуле). Поскольку мы стремимся найти видимые и скрытые строки, не имеет значения, на какой столбец ссылаться (A в нашем примере). Результатом этой операции является массив из 1 и 0, где единицы представляют видимые строки.ряды и нули - скрытые ряды.
    2. Найдите ячейки, содержащие заданный текст. Для этого сравните текст образца (F1) с диапазоном ячеек (B2:B10). Результатом этой операции является массив значений TRUE и FALSE, которые принудительно преобразуются в 1 и 0 с помощью двойного унарного оператора.

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

    Формула для подсчета отфильтрованных ячеек с определенным текстом (частичное совпадение)

    Чтобы подсчитать отфильтрованные ячейки, содержащие определенный текст как часть содержимого ячейки, измените приведенные выше формулы следующим образом. Вместо того чтобы сравнивать текст образца с диапазоном ячеек, выполните поиск целевого текста с помощью ISNUMBER и FIND, как объяснялось в одном из предыдущих примеров:

    =SUMPRODUCT(SUBTOTAL(103, INDIRECT("A"&ROW(A2:A10))), --(ISNUMBER(FIND(F1, B2:B10))))

    =SUMPRODUCT(SUBTOTAL(103, OFFSET(A2:A10, ROW(A2:A10) - MIN(ROW(A2:A10)),,1)), --(ISNUMBER(FIND(F1, B2:B10))))

    В результате формулы будут находить заданную текстовую строку в любой позиции ячейки:

    Примечание. Функция СУММЕСЛИ при 103 в function_num аргумент, определяет все скрытые ячейки, отфильтрованные и скрытые вручную. В результате, приведенные выше формулы подсчитывают только видимые клетки независимо от того, насколько невидимые ячейки были скрыты. Чтобы исключить только отфильтрованные ячейки, но включить те, которые были скрыты вручную, используйте 3 для function_num .

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

    Доступные загрузки

    Формулы Excel для подсчета ячеек с определенным текстом

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