Работа с данными в Microsoft Excel часто требует анализа повторяющихся значений — будь то инвентаризация товаров, обработка опросов или проверка дубликатов в отчётах. Одна из распространённых задач: подсчёт количества вхождений конкретного числа в строке. На первый взгляд задача простая, но стандартные функции вроде СЧЁТЕСЛИ работают с диапазонами, а не с отдельными строками. Как же быть, если нужно узнать, сколько раз число 5 встречается в ячейке A1, где записано 2;5;8;5;3;5?
В этой статье разберём 5 проверенных способов — от простых формул до продвинутых инструментов вроде Power Query. Вы узнаете, как адаптировать решения под разные форматы данных (разделители запятые, точки с запятой, пробелы) и избежать типичных ошибок. А в конце — FAQ с ответами на частые вопросы и лайфхаки для ускорения работы.
Если вы регулярно работаете с текстом в ячейках, где числа перемешаны с другими символами, этот гайд сэкономит вам часы ручной обработки. Например, в строке "Заказ #123: 5 шт. (цена 200₽), 5 шт. (цена 150₽)" стандартный СЧЁТЕСЛИ бессилен — нужны специальные приёмы. Готовы? Начинаем с самого простого метода.
1. Способ: Функция СЧЁТЕСЛИ для диапазона (если числа в отдельных ячейках)
Если ваши числа расположены не в одной строке, а в диапазоне ячеек (например, A1:A10), задача решается элементарно — с помощью функции СЧЁТЕСЛИ. Это базовый инструмент, который подходит для 80% случаев.
Формула выглядит так:
=СЧЁТЕСЛИ(диапазон; критерий)
Где:
- 📌
диапазон— адреса ячеек, где ищем число (например,A1:A100). - 🔍
критерий— искомое число (можно указать ячейку с числом или само число в кавычках, например,"5").
Пример: чтобы посчитать, сколько раз число 10 встречается в столбце B с B2 по B50, введите:
=СЧЁТЕСЛИ(B2:B50; 10)
⚠️ Внимание: ФункцияСЧЁТЕСЛИучитывает только точные совпадения. Если в ячейке записано10,5, а вы ищете10— совпадения не будет. Для частичных совпадений используйтеСЧЁТЕСЛИМНс подстановочными знаками.
Чтобы подсчитать числа с учётом условий (например, "больше 5"), модифицируйте критерий:
=СЧЁТЕСЛИ(B2:B50; ">5")
2. Способ: Подсчёт вхождений числа в текстовой строке (с разделителями)
А теперь главный вопрос: как посчитать повторения числа внутри одной ячейки, где данные записаны через разделитель? Например, в ячейке A1 лежит строка:
3;5;2;5;8;5;1
Нужно узнать, сколько раз встречается число 5.
Решение — комбинация функций ДЛСТР, ПОДСТАВИТЬ и НАЙТИ. Формула:
= (ДЛСТР(A1) - ДЛСТР(ПОДСТАВИТЬ(A1; "5"; ""))) / ДЛСТР("5")
Как это работает:
ПОДСТАВИТЬ(A1; "5"; "")— удаляет все вхождения5из строки.ДЛСТР(A1)иДЛСТР(ПОДСТАВИТЬ(...))— сравнивают длину исходной строки и строки без5.- Результат делят на длину искомого числа (
ДЛСТР("5") = 1), чтобы получить количество вхождений.
Если числа в строке разделены не точкой с запятой, а запятой или пробелом, замените разделитель в формуле. Например, для строки "3,5,2,5,8":
= (ДЛСТР(ПОДСТАВИТЬ(A1; ","; "")) - ДЛСТР(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; ","; ""); "5"; ""))) / ДЛСТР("5")
⚠️ Внимание: Этот метод учитывает все вхождения символа "5", даже если он часть другого числа (например,15или50). Для точного поиска целых чисел используйте способ №3.
Убедитесь, что разделители одинаковые во всех строках
Проверьте, нет ли лишних пробелов перед/после разделителей
Преобразуйте текст в числа (если нужно) функцией ЗНАЧЕН
Сохраните резервную копию файла-->
3. Способ: Точный подсчёт целых чисел с разделителями (продвинутый)
Если в строке числа записаны через разделитель, но нужно учитывать только целые числа (игнорируя 15, 50 и т.д.), потребуется формула массива. Например, для строки 2|5|8|5|15 нужно посчитать только вхождения числа 5, а не символа "5" в числе 15.
Используйте эту формулу (вводите с Ctrl+Shift+Enter в старых версиях Excel):
=СУММ(--(ЗНАЧЕН(РАЗБТЕКСТ(A1; "|"))=5))
Где:
- 🔄
РАЗБТЕКСТ(A1; "|")— разбивает строку по разделителю"|"на массив. - 🔢
ЗНАЧЕН(...)— преобразует текстовые числа в числовой формат. - 🔍
=5— сравнивает каждый элемент массива с числом5. - 📊
--иСУММ— преобразуютИСТИНА/ЛОЖЬв1/0и суммируют.
Для других разделителей замените "|" на нужный символ. В Excel 365 и Excel 2021 формула работает без Ctrl+Shift+Enter.
Критичный нюанс: если в строке есть пустые элементы (например, 2||5), функция ЗНАЧЕН вернёт ошибку. Чтобы избежать этого, добавьте обработку ошибок:
=СУММ(--(ЕСЛИОШИБКА(ЗНАЧЕН(РАЗБТЕКСТ(A1; "|")); 0)=5))
Почему формула не работает в Excel 2010?
В Excel 2010 и старше функция РАЗБТЕКСТ (TEXTSPLIT) отсутствует. Используйте альтернативу:
=СУММ(--(ЗНАЧЕН(ТРАНСП(РАЗДЕЛИТЬ(A1; "|")))=5))
где РАЗДЕЛИТЬ — пользовательская функция VBA или добавlenie через Power Query.
4. Способ: Power Query для сложных строк (автоматизация)
Если у вас тысячи строк с нестандартными разделителями или смешанными данными (числа + текст), ручные формулы станут кошмаром. Здесь на помощь придёт Power Query — инструмент для преобразования данных, встроенный в Excel 2016+ и Office 365.
Алгоритм действий:
- Выделите исходные данные →
Данные → Из таблицы/диапазона(в Excel 2016 —Получить данные → Из таблицы). - В открывшемся редакторе Power Query выделите столбец со строками →
Преобразовать → Разделить столбец → По разделителю. - Укажите разделитель (например, точку с запятой) и нажмите
ОК. - Теперь выделите новый столбец с числами →
Преобразовать → Формат → Числовой. - Добавьте группировку:
Преобразовать → Группировка, выберите столбец с числами, операциюCount Rows. - Нажмите
Закрыть и загрузить— результат появится на новом листе.
Преимущества Power Query:
- ⚡ Обрабатывает миллионы строк без тормозов.
- 🔄 Автоматически обновляет результаты при изменении исходных данных.
- 🛠️ Позволяет очищать данные (удалять пробелы, исправлять ошибки) на лету.
⚠️ Внимание: Если после разделения строки некоторые ячейки остаются пустыми, Power Query может интерпретировать их как ошибки. Чтобы избежать этого, на этапе преобразования добавьте замену пустых значений на0:
Преобразовать → Заменить значения→ в поле "Значение для поиска" оставьте пустым, в "Замена" укажите0.
5. Способ: VBA-скрипт для гибкого подсчёта
Если вам нужно настраиваемое решение (например, искать числа в строках с разными разделителями или игнорировать текст), напишите простую процедуру на VBA. Этот метод подходит для опытных пользователей, но даёт максимальную гибкость.
Откройте редактор VBA (Alt + F11), вставьте новый модуль (Insert → Module) и добавьте этот код:
Function CountNumbersInString(rng As Range, num As Variant, Optional delimiter As String = ";") As Long
Dim arr() As String
Dim count As Long
Dim i As Long
arr = Split(rng.Value, delimiter)
count = 0
For i = LBound(arr) To UBound(arr)
If IsNumeric(arr(i)) Then
If CLng(arr(i)) = CLng(num) Then
count = count + 1
End If
End If
Next i
CountNumbersInString = count
End Function
Теперь в Excel можно использовать эту функцию как стандартную. Например:
=CountNumbersInString(A1; 5; ";")
Где:
A1— ячейка со строкой.5— искомое число.";"— разделитель (необязательный параметр, по умолчанию";").
Преимущества VBA:
| Плюс | Минус |
|---|---|
| ✅ Работает с любыми разделителями | ❌ Требует знаний VBA |
| ✅ Игнорирует нечисловые элементы | ❌ Нужно разрешить макросы |
| ✅ Быстрее формул на больших данных | ❌ Не работает в Excel Online |
Сравнение методов: какой выбрать?
Выбор способа зависит от формата данных, объёма и ваших навыков. Вот краткое сравнение:
| Метод | Подходит для | Сложность | Ограничения |
|---|---|---|---|
СЧЁТЕСЛИ |
Числа в отдельных ячейках | ⭐ | Не работает со строками |
Формула с ДЛСТР/ПОДСТАВИТЬ |
Простые строки с одинаковым разделителем | ⭐⭐ | Учитывает частичные совпадения |
| Формула массива | Точный подсчёт целых чисел | ⭐⭐⭐ | Требует Ctrl+Shift+Enter в старых Excel |
| Power Query | Большие объёмы данных, сложные разделители | ⭐⭐⭐ | Нужно изучить интерфейс |
| VBA | Максимальная гибкость, автоматизация | ⭐⭐⭐⭐ | Требует навыков программирования |
Для разовых задач хватит формул из способов 2–3. Если данные обновляются регулярно — настройте Power Query или VBA.
FAQ: Ответы на частые вопросы
Можно ли посчитать вхождения числа в строке, если разделители разные (то запятая, то точка с запятой)?
Да, но потребуется предварительная обработка. Замените все возможные разделители на один с помощью ПОДСТАВИТЬ:
=ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; ","; "|"); ";"; "|")
А затем используйте любой из методов выше с разделителем "|".
Как посчитать уникальные числа в строке?
Используйте комбинацию Power Query или VBA. В Power Query после разделения строки добавьте шаг Группировка по столбцу с числами, выбрав операцию Count Distinct Rows.
Формула возвращает ошибку #ЗНАЧ!. В чём проблема?
Ошибка возникает, если:
- 🔹 В строке есть текст, который нельзя преобразовать в число (например,
"N/A"). - 🔹 Разделитель указан неверно (например, в строке запятые, а вы ищете точку с запятой).
- 🔹 В старых версиях Excel не нажали
Ctrl+Shift+Enterдля формулы массива.
Проверьте исходные данные и синтаксис формулы.
Как посчитать вхождения числа в диапазоне ячеек, где в каждой ячейке — строка с разделителями?
Примените формулу массива ко всему диапазону. Например, для A1:A10:
=СУММПРОИЗВ(--(ЗНАЧЕН(РАЗБТЕКСТ(A1:A10; ";"))=5))
В Excel 365 формула будет автоматически "проливаться" на все строки.
Можно ли адаптировать эти методы для Google Sheets?
Да, большинство формул работают и в Google Таблицах, но с поправками:
- 📌
РАЗБТЕКСТзаменяется наSPLIT. - 📌 Формулы массива вводятся без
Ctrl+Shift+Enter. - 📌 Power Query недоступен, но есть аналогичный инструмент Apps Script.