Как посчитать количество вхождений в Excel: от простых формул до продвинутых методов

Подсчёт количества вхождений в Microsoft Excel — одна из самых востребованных задач при работе с данными. Без этого инструмента невозможно анализировать повторяющиеся записи, строить статистику или проверять уникальность значений. Однако многие пользователи ограничиваются примитивным ручным подсчётом или функцией СЧЁТЕСЛИ, даже не подозревая о более мощных и гибких методах.

В этой статье мы разберём 7 способов подсчёта вхождений — от базовых до продвинутых, включая формулы массивов, сводные таблицы и даже VBA-макросы. Вы узнаете, как считать повторения с учётом регистра, игнорировать пустые ячейки, работать с диапазонами условий и автоматизировать процесс для больших массивов данных. А ещё мы раскроем типичные ошибки, из-за которых Excel выдаёт неверные результаты, и покажем, как их избежать.

Далеко не всегда достаточно просто посчитать, сколько раз слово или число встречается в таблице. Например, вам может понадобиться:

  • 📊 Подсчитать количество заказов от одного клиента в базе данных
  • 🔍 Найти дубликаты в списке email-адресов с учётом регистра
  • 📈 Проанализировать частоту упоминаний товаров в отзывах
  • 🔄 Автоматически обновлять статистику при добавлении новых строк
📊 Как часто вам приходится считать вхождения в Excel?
Ежедневно
Несколько раз в неделю
Редко, но методы пригодятся
Никогда не делал этого

1. Базовый метод: функция СЧЁТЕСЛИ

Функция СЧЁТЕСЛИ (COUNTIF в английской версии) — самый простой способ подсчёта вхождений. Она работает с одним критерием и возвращает количество ячеек, соответствующих заданному условию. Синтаксис:

=СЧЁТЕСЛИ(диапазон; критерий)

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

=СЧЁТЕСЛИ(A2:A100; "яблоко")

Но у этого метода есть ограничения:

  • ❌ Не учитывает регистр (например, "Яблоко" и "яблоко" будут посчитаны как одно значение)
  • ❌ Не работает с несколько условиями одновременно
  • ❌ Не подходит для подсчёта вхождения части текста (например, словосочетания внутри предложения)

2. Продвинутый подсчёт: СЧЁТЕСЛИМН для нескольких условий

Когда требуется учитывать несколько критериев одновременно, на помощь приходит функция СЧЁТЕСЛИМН (COUNTIFS). Она позволяет задавать условия для разных диапазонов. Синтаксис:

=СЧЁТЕСЛИМН(диапазон1; условие1; [диапазон2; условие2]; ...)

Допустим, у вас таблица заказов с колонками "Товар" и "Статус". Чтобы посчитать, сколько раз товар "ноутбук" встречается со статусом "оплачено", используйте:

=СЧЁТЕСЛИМН(B2:B100; "ноутбук"; C2:C100; "оплачено")

Эта функция решает большинство задач, но имеет нюансы:

⚠️ Внимание: Если диапазоны условий имеют разный размер, Excel вернёт ошибку #ЗНАЧ!. Всегда проверяйте, что количество строк в диапазонах совпадает.
Функция Поддерживает несколько условий? Учитывает регистр? Работает с часть текста?
СЧЁТЕСЛИ ❌ Нет ❌ Нет ❌ Нет
СЧЁТЕСЛИМН ✅ Да ❌ Нет ❌ Нет
НАЙТИ + ЕСЛИ ❌ Нет ✅ Да ✅ Да

3. Подсчёт вхождений части текста (подстроки)

Что делать, если нужно найти не точное совпадение, а вхождение подстроки? Например, посчитать, сколько ячеек содержат слово "отчёт" в любом падеже ("отчёт", "отчёта", "отчёту")?

Используйте комбинацию функций ДЛСТР, НАЙТИ и ЕСЛИОШИБКА:

=СУММ(--НЕ(ЕОШИБКА(НАЙТИ("отчёт"; A2:A100))))

Разберём, как это работает:

  1. НАЙТИ("отчёт"; A2:A100) — ищет позицию подстроки в каждой ячейке
  2. ЕОШИБКА — возвращает ИСТИНА, если подстрока не найдена (ошибка #ЗНАЧ!)
  3. НЕ(ЕОШИБКА(...)) — инвертирует результат: ИСТИНА, если подстрока есть
  4. -- — преобразует ИСТИНА/ЛОЖЬ в 1/0 для суммирования
Почему нельзя использовать ПОИСК вместо НАЙТИ?

Функция ПОИСК (SEARCH) игнорирует регистр и поддерживает подстановочные знаки (*, ?), но работает медленнее. Если вам нужно учитывать регистр — используйте НАЙТИ (FIND).

4. Учёт регистра: точный подсчёт с ТОЧНОЕ и СУММПРОИЗВ

По умолчанию Excel игнорирует регистр при сравнении текста. Но иногда это критично — например, при анализе email-адресов (User@mail.ruuser@mail.ru). Для точного подсчёта используйте:

=СУММПРОИЗВ(--ТОЧНОЕ("Текст"; A2:A100))

Альтернативный вариант с СЧЁТЕСЛИ и вспомогательным столбцом:

  1. Создайте дополнительный столбец с формулой =ТОЧНОЕ("Текст"; A2)
  2. Растяните её на весь диапазон
  3. Используйте =СЧЁТЕСЛИ(B2:B100; ИСТИНА), где B — столбец с ТОЧНОЕ
⚠️ Внимание: Функция ТОЧНОЕ чувствительна не только к регистру, но и к пробелам, табуляциям и непечатаемым символам. Перед подсчётом очистите данные с помощью СЖПРОБЕЛЫ или ПЕЧСИМВ.

5. Динамический подсчёт с помощью сводных таблиц

Если вам нужно не только посчитать вхождения, но и визуализировать данные, сводные таблицы — идеальный инструмент. Они автоматически группируют повторяющиеся значения и считают их количество.

Как создать сводную таблицу для подсчёта:

  1. Выделите диапазон с данными (включая заголовки)
  2. Перейдите на вкладку ВставкаСводная таблица
  3. В поле Строки перетащите столбец, по которому нужно группировать (например, "Товар")
  4. В поле Значения перетащите тот же столбец — Excel автоматически посчитает количество вхождений

Преимущества метода:

  • 🔄 Автоматическое обновление при изменении исходных данных
  • 📊 Возможность добавлять фильтры и slicers для интерактивного анализа
  • 🖼️ Легко преобразовать в диаграмму

Удалить пустые строки и столбцы

Проверить формат данных (текст/числа/даты)

Заменить ошибки (#Н/Д, #ЗНАЧ!) на пустые ячейки или 0

Убедиться, что заголовки уникальны-->

6. Автоматизация: макросы VBA для массового подсчёта

Для обработки больших объёмов данных (десятки тысяч строк) или регулярных задач удобно использовать VBA-макросы. Ниже пример кода, который подсчитывает вхождения для всех уникальных значений в выделенном диапазоне и выводит результат на новый лист:

Sub CountOccurrences()

Dim rng As Range, cell As Range, dict As Object

Dim ws As Worksheet, i As Long

Set dict = CreateObject("Scripting.Dictionary")

Set rng = Selection

'Подсчёт вхождений

For Each cell In rng

If Not dict.Exists(cell.Value) Then

dict.Add cell.Value, 1

Else

dict(cell.Value) = dict(cell.Value) + 1

End If

Next cell

'Вывод результата

Set ws = Worksheets.Add

ws.Range("A1").Value = "Значение"

ws.Range("B1").Value = "Количество"

i = 2

For Each Key In dict.Keys

ws.Cells(i, 1).Value = Key

ws.Cells(i, 2).Value = dict(Key)

i = i + 1

Next Key

End Sub

Как использовать этот макрос:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA
  2. Вставьте код в новый модуль (Insert → Module)
  3. Выделите диапазон с данными в Excel
  4. Запустите макрос (F5 или через Макросы в меню Вид)
⚠️ Внимание: Перед запуском макроса сохраните файл в формате .xlsm (с поддержкой макросов), иначе код не выполнится. Также проверьте настройки безопасности в Файл → Параметры → Центр управления безопасностью.

7. Типичные ошибки и как их избежать

Даже опытные пользователи сталкиваются с ошибками при подсчёте вхождений. Вот самые распространённые проблемы и их решения:

  • 🔢 Ошибка #ИМЯ? — проверьте правильность написания функции (например, СЧЁТЕСЛИ, а не СЧЁТ_ЕСЛИ)
  • 📌 Неправильный диапазон — убедитесь, что в формуле указаны все строки с данными (например, A2:A100, а не A2:A10)
  • 🔍 Лишние пробелы — используйте СЖПРОБЕЛЫ для очистки данных перед подсчётом
  • 📊 Сводная таблица не обновляется — нажмите правой кнопкой по таблице и выберите Обновить

Критическая ошибка: если в диапазоне есть объединённые ячейки, функции СЧЁТЕСЛИ и СЧЁТЕСЛИМН могут давать неверные результаты. Перед подсчётом разъедините ячейки через Главная → Объединить и поместить в центре.

FAQ: Ответы на частые вопросы

Можно ли посчитать вхождения в Google Таблицах?

Да, в Google Sheets работают те же функции, но с английским синтаксисом: =COUNTIF вместо СЧЁТЕСЛИ и =COUNTIFS вместо СЧЁТЕСЛИМН. Также поддерживаются формулы массивов с ARRAYFORMULA.

Как посчитать уникальные вхождения (без повторов)?

Используйте функцию =СЧЁТЕСЛИ(диапазон; критерий) = 1 для каждой ячейки, а затем просуммируйте результаты. Или создайте сводную таблицу и отфильтруйте по значению "1" в столбце с количеством.

Почему СЧЁТЕСЛИ считает пустые ячейки?

Функция СЧЁТЕСЛИ воспринимает пустые ячейки как нулевые значения. Чтобы их игнорировать, используйте условие <>"" или комбинацию с ЕПУСТО.

Как посчитать вхождения в фильтрованном диапазоне?

Для видимых ячеек после фильтрации используйте функцию ПРОМЕЖУТОЧНЫЕ.ИТОГИ с параметром 3 (подсчёт): =ПРОМЕЖУТОЧНЫЕ.ИТОГИ(3; диапазон).

Можно ли посчитать вхождения по цвету ячейки?

Стандартными функциями — нет. Но можно написать VBA-макрос или использовать надстройку Kutools for Excel, которая добавляет функцию COUNTBYCOLOR.