Как посчитать количество ячеек в Excel: от простого к сложному

Работа с большими таблицами в Microsoft Excel или Google Sheets часто требует точного подсчёта ячеек — будь то заполненные данные, пустые поля или клетки, отвечающие определённым критериям. На первый взгляд задача кажется тривиальной, но уже через 5 минут многие пользователи сталкиваются с вопросами: "Как посчитать только непустые ячейки?", "Почему функция СЧЁТ не работает с текстом?" или "Можно ли автоматически обновлять количество строк при добавлении новых данных?".

Эта статья не просто перечислит стандартные функции вроде СЧЁТ или СЧЁТЗ. Мы разберём 7 практических методов — от базовых до продвинутых, включая малоизвестные приёмы с ГПР, динамическими массивами и даже Power Query. Вы узнаете, как обойти типичные ошибки (например, когда Excel "не видит" числа из-за формата ячеек) и оптимизировать расчёты для таблиц с миллионами строк.

Особое внимание уделим трём ключевым сценариям:

  • 📊 Подсчёт всех ячеек в диапазоне (включая пустые)
  • 🔍 Выборочный подсчёт по условиям (числа, текст, даты)
  • Динамический пересчёт при изменении данных

Если вы никогда не пользовались формулами или только начинаете осваивать Excel, начните с первых трёх разделов. Опытным пользователям будут полезны разделы 5–7, где мы погружаемся в ЛЯМБДА-функции и автоматизацию через VBA.

📊 Как часто вы считаете ячейки в Excel?
Ежедневно
Несколько раз в неделю
Рядом
Первый раз пробую

1. Базовые методы: ручной подсчёт и горячие клавиши

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

Способ 1: Статусная строка

Выделите диапазон ячеек (например, A1:D100) и посмотрите на правый нижний угол окна Excel. Там отобразится информация вроде:

Среднее: 12.5  Количество: 400  Сумма: 5000

Здесь Количество: 400 — это общее число выделенных ячеек (включая пустые). Чтобы увидеть только заполненные, используйте комбинацию: Ctrl + Shift + L (включает фильтр) → отметьте галочкой "Непустые" в выпадающем списке столбца.

Способ 2: Горячие клавиши для выделения

  • 🔹 Ctrl + Shift + ↓ — выделит все ячейки вниз до первой пустой (полезно для столбцов с данными)
  • 🔹 Ctrl + A (дважды) — выделит всю таблицу до последней непустой ячейки
  • 🔹 F5 → Специальная вставка → Пустые ячейки — выделит только пустые клетки в диапазоне

Ограничение: эти методы работают только для визуально доступных данных. Если в таблице скрыты строки или применён фильтр, результаты будут неточными.

2. Стандартные функции: СЧЁТ, СЧЁТЗ и их скрытые возможности

Переходим к формулам — основам автоматизации подсчёта. Большинство пользователей знают СЧЁТ и СЧЁТЗ, но немногие используют их полный потенциал.

Функция СЧЁТ(значение1; [значение2]; ...)

Считает только ячейки с числами, игнорируя текст, даты и пустые клетки. Пример:

=СЧЁТ(A1:A100)

Важный нюанс: Excel воспринимает как числа даже ячейки с формулами, возвращающими числовое значение (например, =СЕГОДНЯ()).

Функция СЧЁТЗ(значение1; [значение2]; ...)

Считает все непустые ячейки, включая текст, числа, ошибки (#ДЕЛ/0!) и даже формулы, возвращающие пустую строку (=""). Пример:

=СЧЁТЗ(B2:B500)

Скрытые фишки:

  • 🔢 СЧЁТ(1/А1:А10) — посчитает только ненулевые ячейки (ошибки #ДЕЛ/0! будут проигнорированы, если использовать СЧЁТА)
  • 📅 СЧЁТЕСЛИ(диапазон; ">01.01.2023") — подсчёт дат позже указанной
  • 🚫 СЧЁТЗ(диапазон)-СЧЁТ(диапазон) — посчитает только текстовые ячейки

Критическая ошибка: если в ячейке отображается число, но Excel "не видит" его (например, из-за текстового формата), используйте =СЧЁТ(--A1:A100) — двойной унарный минус преобразует текстовые числа в числовой формат.

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

Нет скрытых символов (пробелов, неразрывных пробелов)|

Диапазон не содержит объединённых ячеек|

Учтён регистр при подсчёте текста (Excel различает "Да" и "да")-->

3. Подсчёт по условиям: СЧЁТЕСЛИ, СЧЁТЕСЛИМН и регулярные выражения

Когда нужно посчитать ячейки, соответствующие определённым критериям, на помощь приходят условные функции. Их синтаксис прост, но возможности шире, чем кажется.

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

Считает ячейки, удовлетворяющие одному условию. Примеры:

=СЧЁТЕСЛИ(C2:C100; ">50")  // числа больше 50

=СЧЁТЕСЛИ(D2:D500; "Да") // текстовое совпадение

=СЧЁТЕСЛИ(E1:E200; "<>") // все непустые ячейки

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

Позволяет задавать несколько условий одновременно. Ключевое правило: диапазоны должны быть одинакового размера. Пример:

=СЧЁТЕСЛИМН(A2:A100; ">100"; B2:B100; "Муж")

Эта формула посчитает строки, где в столбце A значение >100, а в столбце B указано "Муж".

Продвинутый уровень: подсчёт с регулярными выражениями

Excel не поддерживает полноценные regex, но можно обойти это с помощью ПОИСК или НАЙТИ в массиве:

=СУММ(--(НЕОШ(ПОИСК("привет"; A1:A100))))

Эта формула посчитает все ячейки в A1:A100, содержащие подстроку "привет" (в любом регистре).

Как посчитать ячейки с ошибками?

Используйте комбинацию функций:

=СУММ(ЕОШ(А1:А100))

Это вернёт количество ячеек с ошибками (#ДЕЛ/0!, #ЗНАЧ! и т.д.) в диапазоне. Для конкретной ошибки (например, только #Н/Д) используйте:

=СЧЁТЕСЛИ(А1:А100; "#Н/Д")

4. Динамические диапазоны и умные таблицы

Статичные диапазоны (например, A1:A1000) неудобны: при добавлении новых данных формулы не обновляются автоматически. Решения:

Метод 1: Динамические именованные диапазоны

Создайте именованный диапазон через Формулы → Диспетчер имён → Создать и используйте формулу:

=СМЕЩ(Лист1!$A$1;0;0;СЧЁТЗ(Лист1!$A:$A);1)

Теперь при обращении к имени (например, Данные) Excel будет автоматически расширять диапазон до последней непустой ячейки в столбце A.

Метод 2: Умные таблицы (Ctrl + T)

Преобразуйте диапазон в таблицу (Вставка → Таблица). Теперь:

  • 🔄 Формулы вроде =СЧЁТЗ(Таблица1[Столбец1]) будут автоматически расширяться
  • 📊 Появятся встроенные фильтры и сортировка
  • 🔍 Можно использовать структурированные ссылки (например, =СЧЁТЕСЛИ(Таблица1[Статус]; "Готово"))

Метод 3: Новые функции Excel 365 (динамические массивы)

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

=ФИЛЬТР(A2:B100; (A2:A100<>0)*(B2:B100="Да"); "Нет данных")

Сочетайте их с СТРОКА или ЧСТРОК для подсчёта:

=ЧСТРОК(ФИЛЬТР(A2:A100; A2:A100>50))

5. Продвинутые приёмы: ЛЯМБДА, ПОЛУЧИТЬ.ДАННЫЕ и Power Query

Для сложных задач стандартных функций недостаточно. Здесь помогут пользовательские функции и инструменты Power Query.

Способ 1: Пользовательская функция ЛЯМБДА (Excel 365)

Создайте функцию для подсчёта ячеек с уникальными значениями:

=ЛЯМБДА(диапазон;

СЧЁТ(УНИК(диапазон))

)

Теперь вызовите её как:

=УникСчёт(A2:A100)

Где УникСчёт — имя, присвоенное функции через Диспетчер имён.

Способ 2: Функция ПОЛУЧИТЬ.ДАННЫЕ (GET.CELL)

Эта малоизвестная функция позволяет получать свойства ячеек (цвет, формат, формулу). Чтобы её активировать:

  1. Нажмите Alt + F11Insert → Module
  2. Вставьте код:
    Function CountColoredCells(rng As Range, color As Range) As Long
    

    Dim cl As Range

    Dim count As Long

    count = 0

    For Each cl In rng

    If cl.Interior.Color = color.Interior.Color Then

    count = count + 1

    End If

    Next cl

    CountColoredCells = count

    End Function

  3. Теперь в Excel используйте =CountColoredCells(A1:A100; B1), где B1 — ячейка с образцом цвета.

Способ 3: Power Query для сложной фильтрации

Если нужно посчитать ячейки после многоступенчатой обработки (объединение таблиц, замена значений, группировка), используйте Power Query:

  1. Выделите данные → Данные → Получить данные → Из таблицы/диапазона
  2. В редакторе запросов примените фильтры (например, оставьте только строки, где Столбец1 > 100)
  3. Добавьте столбец с формулой = Table.RowCount(#"Отфильтрованные строки")
  4. Загрузите результат обратно в Excel.
Как посчитать ячейки с формулами?

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

  1. Нажмите F5 → Выделить → Формулы (выделяет все ячейки с формулами на листе)
  2. Или используйте VBA:
    Function CountFormulas(rng As Range) As Long
    

    CountFormulas = rng.SpecialCells(xlCellTypeFormulas).Count

    End Function

  3. В ячейке введите =CountFormulas(A1:D100)

6. Ошибки и ловушки: почему Excel считает неправильно

Даже опытные пользователи сталкиваются с ситуациями, когда Excel "врёт" при подсчёте ячеек. Разберём топ-5 причин и способы их исправления.

Проблема 1: Текстовые числа

Если ячейка содержит '123 (с апострофом) или отформатирована как текст, СЧЁТ её проигнорирует.

Решение: Используйте =СЧЁТ(--A1:A100) или ТЕКСТВЧИСЛО:

=СУММ(ЕЧИСЛО(ТЕКСТВЧИСЛО(A1:A100)))

Проблема 2: Скрытые символы

Пробелы, табуляции или неразрывные пробелы (Char(160)) делают ячейку "непустой" для СЧЁТЗ, но визуально она выглядит пустой.

Решение: Очистите данные с помощью СЖПРОБЕЛЫ или ПЕЧСИМВ:

=СЧЁТЕСЛИ(A1:A100; "<>") - СЧЁТЕСЛИ(A1:A100; " ")

Проблема 3: Объединённые ячейки СЧЁТЗ считает объединённую ячейку как одну, даже если визуально она занимает несколько строк/столбцов.

Решение: Разъедините ячейки (Главная → Объединить и центрировать) или используйте VBA для точного подсчёта.

Проблема 4: Формулы, возвращающие пустую строку

Формула вроде =ЕСЛИ(A1>10; "Да"; "") создаёт "пустую" ячейку, но СЧЁТЗ её посчитает.

Решение: Заменяйте пустые строки на NA() или используйте:

=СЧЁТЕСЛИ(A1:A100; "<>") - СЧЁТЕСЛИ(A1:A100; "")

Проблема 5: Ошибки в диапазоне

Ячейки с #Н/Д или #ЗНАЧ! могут ломать СЧЁТ и СЧЁТЕСЛИ.

Решение: Оборачивайте диапазон в ЕСЛИОШИБКА:

=СЧЁТ(ЕСЛИОШИБКА(A1:A100; 0))

7. Автоматизация: VBA и Office Scripts для массового подсчёта

Если вам регулярно нужно считать ячейки в десятках файлов или применять сложную логику, ручные методы не подойдут. Здесь помогут скрипты.

Пример 1: VBA для подсчёта ячеек по цвету

Sub CountCellsByColor()

Dim rng As Range, cell As Range, count As Long

Dim targetColor As Long

Set rng = Selection

targetColor = rng.Cells(1).Interior.Color

count = 0

For Each cell In rng

If cell.Interior.Color = targetColor Then

count = count + 1

End If

Next cell

MsgBox "Ячеек с выбранным цветом: " & count

End Sub

Чтобы запустить:

  1. Выделите диапазон
  2. Нажмите Alt + F8, выберите CountCellsByColorВыполнить

Пример 2: Office Scripts (Excel Online)

Для подсчёта ячеек с определённым текстом в Excel для веба:

function main(workbook: ExcelScript.Workbook) {

let sheet = workbook.getActiveWorksheet();

let range = sheet.getRange("A1:A100");

let count = 0;

range.getValues().forEach(row => {

row.forEach(cell => {

if (cell.toString().includes("Важное")) {

count++;

}

});

});

console.log(`Найдено ячеек: ${count}`);

}

Пример 3: Пакетная обработка файлов

Скрипт для подсчёта непустых ячеек во всех файлах папки (требует подключения библиотеки Scripting.FileSystemObject):

Код для пакетной обработки

Sub CountCellsInFolder()

Dim fso As Object, folder As Object, file As Object

Dim wb As Workbook, ws As Worksheet

Dim totalCount As Long

Set fso = CreateObject("Scripting.FileSystemObject")

Set folder = fso.GetFolder("C:\ВашаПапка\")

totalCount = 0

For Each file In folder.Files

If LCase(fso.GetExtensionName(file.Path)) = "xlsx" Then

Set wb = Workbooks.Open(file.Path)

For Each ws In wb.Worksheets

totalCount = totalCount + ws.UsedRange.Cells.Count

Next ws

wb.Close False

End If

Next file

MsgBox "Всего ячеек во всех файлах: " & totalCount

End Sub

📊 Какой метод подсчёта ячеек вы используете чаще?
Ручной (горячие клавиши, статусная строка)
Стандартные функции (СЧЁТ, СЧЁТЗ)
Условный подсчёт (СЧЁТЕСЛИ)
Динамические диапазоны/таблицы
VBA или скрипты

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

Как посчитать количество строк в таблице, если данные добавляются автоматически?

Используйте умную таблицу (Ctrl + T) и формулу:

=ЧСТРОК(Таблица1[#Данные])

Либо создайте динамический именованный диапазон:

=СМЕЩ(Лист1!$A$1;0;0;СЧЁТЗ(Лист1!$A:$A);1)

Теперь при добавлении строк в столбец A диапазон будет расширяться автоматически.

Почему СЧЁТЗ считает пустые ячейки с формулами?

Формулы, возвращающие пустую строку (=""), воспринимаются СЧЁТЗ как непустые. Чтобы их исключить, используйте:

=СЧЁТЕСЛИ(диапазон; "<>") - СЧЁТЕСЛИ(диапазон; "")

Или замените пустые результаты на NA():

=ЕСЛИ(условие; ""; NA())
Можно ли посчитать ячейки с определённым форматом (например, жирным шрифтом)?

Стандартными функциями — нет. Но можно через VBA:

Function CountBoldCells(rng As Range) As Long

Dim cell As Range, count As Long

count = 0

For Each cell In rng

If cell.Font.Bold Then count = count + 1

Next cell

CountBoldCells = count

End Function

В ячейке введите =CountBoldCells(A1:D100).

Как посчитать уникальные значения в диапазоне?

В Excel 365 используйте:

=СЧЁТ(УНИК(диапазон))

В старых версиях — комбинацию:

=СУММ(1/ЧАСТОТА(диапазон; диапазон))

Важно: это массивная формула — завершайте её Ctrl + Shift + Enter в Excel 2019 и старше.

Почему СЧЁТЕСЛИ не работает с датами?

Excel хранит даты как числа, но СЧЁТЕСЛИ может ошибаться из-за формата. Всегда используйте:

=СЧЁТЕСЛИ(диапазон; ">=" & ДАТА(2023;1;1))

Или преобразуйте дату в число:

=СЧЁТЕСЛИ(диапазон; ">=" & ДАТАЗНАЧ("01.01.2023"))