Подсчёт символов «+» в таблицах Microsoft Excel или Google Sheets — задача, с которой сталкиваются бухгалтеры, аналитики и даже школьники при обработке опросов или проверке данных. На первый взгляд кажется, что достаточно просто пролистать таблицу глазами, но когда речь идёт о тысячах строк, ручной метод становится неэффективным. К счастью, в Excel есть несколько способов автоматизировать этот процесс — от элементарных функций до сложных формул с регулярными выражениями.
В этой статье мы разберём 5 рабочих методов, включая их плюсы и минусы, а также покажем, как адаптировать решения под разные версии Excel (2010, 2016, 2019, 365) и Google Таблицы. Вы узнаете, как считать плюсы в отдельной ячейке, диапазоне, или даже с учётом условий (например, только в положительных числах). Особое внимание уделим обходу типичной ошибки, когда Excel путает математический знак «+» с текстом или частью формулы.
1. Базовый метод: функция ДЛСТР + ПОДСТАВИТЬ
Самый простой способ посчитать количество плюсов — использовать комбинацию функций ДЛСТР (длина строки) и ПОДСТАВИТЬ (замена символов). Логика проста: мы сравниваем длину исходной строки с длиной строки, где все «+» удалены. Разница и будет количеством плюсов.
Формула выглядит так:
=ДЛСТР(A1) - ДЛСТР(ПОДСТАВИТЬ(A1; "+"; ""))
Где A1 — ячейка, в которой нужно посчитать плюсы. Этот метод работает и в Google Sheets, и во всех версиях Excel, начиная с 2003 года. Однако у него есть ограничение: он считает все плюсы, включая те, что являются частью слов (например, «C++») или математических выражений (например, «5+3»).
- ✅ Подходит для любых версий Excel
- ✅ Не требует знания сложных функций
- ⚠️ Считает плюсы в составе других символов
- ⚠️ Не различает плюс как знак операции и как текст
2. Продвинутый подход: функция НАЙТИ в массиве
Для более точного подсчёта, когда плюсы могут быть частью других символов, используйте формулу массива с функцией НАЙТИ. Этот метод позволяет учитывать только изолированные плюсы или плюсы в определённом контексте (например, в начале строки).
Формула для подсчёта всех плюсов в ячейке:
=СУММ(ЕСЛИОШИБКА(НАЙТИ("+"; ПОВТОР(A1; " "); СТРОКА(ДВССЫЛ("1:100"))); 0))
Эта формула работает как формула массива (в старых версиях Excel её нужно вводить через Ctrl+Shift+Enter). Она ищет каждый плюс по отдельности и суммирует результаты. Преимущество метода — гибкость: вы можете модифицировать его для поиска плюсов только в определённых позициях.
⚠️ Внимание: В Excel 365 и Excel 2021 формулы массива вводятся автоматически. В более ранних версиях (2010–2019) не забудьте нажать Ctrl+Shift+Enter, иначе результат будет неверным.
| Метод | Подходит для | Учитывает контекст | Сложность |
|---|---|---|---|
ДЛСТР + ПОДСТАВИТЬ |
Все версии Excel | Нет | ⭐ |
НАЙТИ в массиве |
Excel 2010+ | Да | ⭐⭐⭐ |
РЕГВЫРАЖ (REPT) |
Excel 365, Google Sheets | Да | ⭐⭐ |
3. Использование регулярных выражений (Excel 365 и Google Sheets)
Если вы работаете в Excel 365 или Google Таблицах, у вас есть доступ к функции РЕГВЫРАЖ (REGEX в английской версии), которая позволяет использовать регулярные выражения для поиска символов. Это самый мощный инструмент для работы с текстом.
Формула для подсчёта всех плюсов:
=ДЛСТР(РЕГВЫРАЖ.ИЗВЛЕЧЬ(A1; "+"; ""))
А если нужно посчитать только плюсы, которые стоят отдельно (например, как знак операции или маркер):
=ДЛСТР(РЕГВЫРАЖ.ИЗВЛЕЧЬ(A1; "(^\+|\s\+|\+\s|\+$)"; ""))
Регулярное выражение (^\+|\s\+|\+\s|\+$) ищет плюсы, которые стоят:
- ➕ В начале строки (
^\+) - ➕ После пробела (
\s\+) - ➕ Перед пробелом (
\+\s) - ➕ В конце строки (
\+$)
4. Подсчёт плюсов в диапазоне ячеек
Чтобы посчитать количество плюсов во всём столбце или таблице, нужно применить одну из предыдущих формул ко всему диапазону и суммировать результаты. Например, для диапазона A1:A100:
=СУММ(ДЛСТР(A1:A100) - ДЛСТР(ПОДСТАВИТЬ(A1:A100; "+"; "")))
В Excel 365 эта формула будет работать автоматически. В более старых версиях её нужно вводить как формулу массива (Ctrl+Shift+Enter). Альтернативный вариант — создать вспомогательный столбец с формулой для каждой ячейки и затем просуммировать его.
⚠️ Внимание: Если в диапазоне есть пустые ячейки, функцияДЛСТРвернёт 0, что может исказить результат. Чтобы избежать этого, добавьте проверку на пустоту:=СУММЕСЛИ(A1:A100; "<>"; ДЛСТР(A1:A100) - ДЛСТР(ПОДСТАВИТЬ(A1:A100; "+"; "")))
Убедитесь, что в диапазоне нет объединённых ячеек|
Проверьте, нет ли скрытых символов (например, неразрывных пробелов)|
Используйте ТРИМ для удаления лишних пробелов|
Для больших диапазонов (>10 000 строк) разбейте задачу на части-->
5. Учёт плюсов только в числовых значениях
Если вам нужно посчитать плюсы только в ячейках с положительными числами (например, «+5», «+100»), а игнорировать текстовые плюсы (например, «A+», «++»), используйте комбинацию функций ЕЧИСЛО и НАЙТИ:
=СУММ(ЕСЛИ(ЕЧИСЛО(A1:A100); ЕСЛИ(НЕ(ЕОШ(НАЙТИ("+"; A1:A100))); 1; 0); 0))
Эта формула:
- Проверяет, является ли содержимое ячейки числом (
ЕЧИСЛО). - Ищет в нём знак «+» (
НАЙТИ). - Суммирует только те ячейки, где оба условия выполнены.
В Google Sheets аналогичный результат даст формула:
=СУММАРНО(ЕСЛИ(ЕЧИСЛО(A1:A100); ЕСЛИ(РЕГВЫРАЖСОВПАД(A1:A100; "\+"); 1; 0); 0))
Что делать, если Excel не видит плюс в числе?
Иногда Excel автоматически удаляет знак «+» перед числами (например, «+5» становится «5»). Чтобы этого избежать:
- Форматируйте ячейку как текст перед вводом данных.
- Используйте апостроф перед числом:
'+5. - В настройках Excel отключите параметр
Автоматическое исправление знаков при вводе(вФайл → Параметры → Правописание → Параметры автозамены).
6. Автоматизация с помощью VBA (для опытных пользователей)
Если вам регулярно приходится считать плюсы в больших таблицах, имеет смысл написать простую макрофункцию на VBA. Этот метод подходит для Excel 2010–2019 и позволяет гибко настраивать условия подсчёта.
Пример кода для подсчёта плюсов в выбранном диапазоне:
Function CountPluses(rng As Range) As Long
Dim cell As Range
Dim count As Long
count = 0
For Each cell In rng
count = count + (Len(cell.Value) - Len(Replace(cell.Value, "+", "")))
Next cell
CountPluses = count
End Function
Чтобы использовать эту функцию:
- Нажмите
Alt + F11, чтобы открыть редактор VBA. - Вставьте код в новый модуль (
Insert → Module). - Сохраните файл как
.xlsm(с поддержкой макросов). - В ячейке введите формулу:
=CountPluses(A1:A100).
Преимущество VBA — возможность доработать функцию под специфические задачи, например, игнорировать плюсы в определённых столбцах или учитывать регистр.
FAQ: Частые вопросы о подсчёте плюсов в Excel
Можно ли посчитать плюсы в защищённой ячейке?
Да, но только если у вас есть права на просмотр содержимого ячейки. Формулы будут работать, даже если ячейка заблокирована для редактирования. Однако если ячейка скрыта (с помощью формата ;;;), её содержимое не будет учитываться в расчётах.
Почему формула ДЛСТР - ПОДСТАВИТЬ даёт неверный результат?
Наиболее вероятные причины:
- 🔹 В ячейке есть непечатаемые символы (например, табуляция или перевод строки). Используйте
=ЧИСТ(A1), чтобы их удалить. - 🔹 Плюс является частью формулы, а не текста. В этом случае Excel не увидит его как символ.
- 🔹 Ячейка содержит ошибку (например,
#Н/Д). Добавьте проверкуЕОШИБКА.
Как посчитать плюсы в сводной таблице?
Сводные таблицы не поддерживают пользовательские формулы для подсчёта символов. Решения:
- Добавьте вспомогательный столбец с формулой подсчёта плюсов в исходных данных, затем включите его в сводную таблицу.
- Используйте Power Query для предварительной обработки данных.
Есть ли разница между плюсом в тексте и в формуле?
Да, и это критично для подсчёта:
- 📌 Текстовый плюс (например, «A+») — виден как символ и считается всеми методами.
- 📌 Плюс в формуле (например,
=5+3) — не является частью текста ячейки, поэтому формулы его не увидят. Чтобы посчитать такие плюсы, нужно анализироватьФормульный текст(в Excel 365 есть функцияФОРМУЛТЕКСТ).
Как посчитать плюсы в Google Sheets?
Все описанные методы работают и в Google Таблицах, за исключением VBA. Вместо макросов используйте Apps Script. Например, этот скрипт подсчитает плюсы в диапазоне A1:A100:
function countPluses() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange("A1:A100");
var values = range.getValues();
var count = 0;
for (var i = 0; i < values.length; i++) {
count += (values[i][0].toString().split("+").length - 1);
}
Logger.log(count);
}