Почему стандартный подсчёт строк не работает с формами
Вы скачали данные из Google Forms, 1С или CRM-системы, а в Excel оказались сотни строк — но как понять, сколько из них реально заполнены? Простое выделение мышкой или функция СЧЁТ даст неверный результат: они посчитают все строки, включая пустые или с одним ответом. А вам нужны только те, где заполнено хотя бы 3 из 5 полей или где выбрана конкретная опция.
Проблема в том, что формы часто экспортируются с "дырами": пользователь мог пропустить вопросы, а система всё равно создаёт строку. Например, в опросе из 10 вопросов респондент ответил только на 2 — но в Excel это будет полноценная строка с 8 пустыми ячейками. Здесь нужны специальные приёмы, о которых мы расскажем ниже.
Способ 1: Функция СЧЁТЗ для подсчёта непустых ячеек
Самый простой метод — использовать СЧЁТЗ (COUNTIF в английской версии). Она считает количество непустых ячеек в диапазоне. Например, если у вас форма с 5 вопросами (столбцы A:E), формула =СЧЁТЗ(A2:E2) покажет, сколько полей заполнил респондент в строке 2.
Чтобы посчитать все строки с хотя бы одним ответом, протяните формулу вниз и используйте её внутри СЧЁТЕСЛИ:
=СЧЁТЕСЛИ(F2:F100;">=1")
где F2:F100 — столбец с результатами СЧЁТЗ для каждой строки.
- ✅ Подходит для форм с обязательным заполнением хотя бы одного поля
- ❌ Не учитывает качество заполнения (может посчитать строку с 1 ответом из 20)
- ⚠️ Не работает, если в пустых ячейках стоят формулы (даже если они возвращают "")
Способ 2: СЧЁТЕСЛИМН для форм с обязательными полями
Допустим, в вашей форме есть 3 обязательных вопроса (столбцы B, D и F). Чтобы посчитать только те строки, где заполнены все три, используйте:
=СЧЁТЕСЛИМН(B2:B100;"<>"""; D2:D100;"<>"""; F2:F100;"<>"""
Эта формула проверяет, что в каждом из указанных столбцов есть ненулевое значение. Если хоть в одном поле пусто — строка не считается.
| Столбец | Вопрос формы | Тип данных | Пример условия |
|---|---|---|---|
| B | Email респондента | Текст | "<>""" |
| D | Возраст | Число | 17" |
| F | Согласие на обработку данных | Да/Нет | "=Да" |
⚠️ Внимание: Если в обязательном поле могут быть разные корректные значения (например, "Да"/"Согласен"/"1"), перечислите их через массив: =СЧЁТЕСЛИМН(F2:F100;{"Да";"Согласен";1})
Способ 3: Power Query для сложных форм с вложенными данными
Когда данные экспортируются в виде "одна строка — один ответ" (типично для Google Forms с повторяющимися блоками), обычные формулы бессильны. Здесь поможет Power Query (в Excel 2016+ или как надстройка Get & Transform).
Алгоритм:
- Выделите исходную таблицу →
Данные → Из таблицы/диапазона - В редакторе Power Query добавьте условный столбец (например, "Статус"), который отмечает строки с заполненными ключевыми полями
- Отфильтруйте строки по этому столбцу
- Сгруппируйте данные по ID респондента (если есть) с операцией
Count Rows
Пример M-кода для фильтрации пустых строк
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Добавлен статус" = Table.AddColumn(Source, "Заполнено", each if [Email] <> null and [Возраст] <> null then "Да" else "Нет"),
#"Отфильтровано" = Table.SelectRows(#"Добавлен статус", each ([Заполнено] = "Да"))
in
#"Отфильтровано"
Преимущество метода: обрабатывает многомерные данные (например, когда один респондент заполнил несколько блоков формы) и позволяет очищать данные "на лету".
Способ 4: Условное форматирование для визуального контроля
Если вам нужно не только посчитать, но и визуально выделить заполненные формы, используйте условное форматирование:
- Выделите диапазон с данными (например, A2:Z100)
- Перейдите в
Главная → Условное форматирование → Создать правило - Выберите
Использовать формулу...и введите:=СЧЁТЗ($A2:$Z2)>3(где 3 — минимальное количество заполненных полей)
- Задайте формат (например, зелёную заливку)
Теперь все строки, где заполнено больше 3 полей, будут подсвечены. Чтобы посчитать их количество, используйте:
=СЧЁТЕСЛИ(А2:А100;">"")-СЧЁТЕСЛИ(ЦветЯчейки;16777215)
(где ЦветЯчейки — имя диапазона с условным форматированием, а 16777215 — код белого цвета)
✓ Удалите служебные строки (заголовки, итоги)
✓ Замените "N/A" или "нет данных" на пустые ячейки (=ПОДСТАВИТЬ(A2;"N/A";""))
✓ Проверьте формат ячеек (текст/число/дата)
✓ Убедитесь, что нет объединённых ячеек
-->
Способ 5: VBA-макрос для автоматизации подсчёта
Если вам регулярно приходится обрабатывать формы, напишите простой макрос. Например, этот код считает строки, где заполнено хотя бы 50% полей:
Sub CountFilledForms()
Dim ws As Worksheet
Dim lastRow As Long, i As Long, count As Long
Dim cols As Long, filled As Long
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.count, "A").End(xlUp).Row
cols = ws.Cells(1, ws.Columns.count).End(xlToLeft).Column
For i = 2 To lastRow 'пропускаем заголовок
filled = Application.WorksheetFunction.CountA(ws.Rows(i))
If filled >= cols / 2 Then count = count + 1
Next i
MsgBox "Заполненных форм: " & count & " из " & (lastRow - 1)
End Sub
Как использовать:
- Нажмите
Alt+F11, чтобы открыть редактор VBA - Вставьте код в новый модуль (
Insert → Module) - Запустите макрос через
F5или кнопку на панели
⚠️ Внимание: Перед запуском макроса сохраните файл как .xlsm (с поддержкой макросов) и проверьте, что в Файл → Параметры → Центр управления безопасностью разрешено выполнение макросов.
Типичные ошибки и как их избежать
Даже опытные пользователи Excel допускают ошибки при подсчёте форм. Вот самые распространённые:
- 🔹 Пустые ячейки с формулами: Функция
СЧЁТЗпосчитает ячейку с=ЕСЛИ(A1="";"";A1)как пустую, хотя там может быть скрытое значение. Решение: используйтеЕПУСТОилиДЛСТРдля проверки. - 🔹 Скрытые символы: В данных из веб-форм часто встречаются неразрывные пробелы (
CHAR(160)) или символы табуляции. Очистите их через=ПЕЧСИМВ(A2). - 🔹 Дубликаты строк: Если форма позволяла отправлять данные несколько раз, используйте
Удалить дубликаты(Данные → Удалить дубликаты) перед подсчётом. - 🔹 Несоответствие типов данных: Даты в текстовом формате ("01.01.2023") не будут распознаны как числа. Преобразуйте их через
ДАТАЗНАЧ.
Проверьте свои данные на эти проблемы с помощью контрольного листа:
=ЕСЛИ(ИЛИ(ЕОШ(ДАТАЗНАЧ(B2)); ЕПУСТО(B2)); "Проблема"; "OK")
FAQ: Ответы на частые вопросы
Как посчитать формы, где выбрана конкретная опция (например, "Да" в вопросе о согласии)?
Используйте СЧЁТЕСЛИ для одного условия или СЧЁТЕСЛИМН для нескольких. Пример:
=СЧЁТЕСЛИ(D2:D100; "Да")
Если варианты ответа могут быть разными ("Да", "Согласен", "1"), используйте:
=СУММ(СЧЁТЕСЛИ(D2:D100; {"Да";"Согласен";1}))
Можно ли посчитать формы по дате заполнения?
Да, если в данных есть столбец с датой. Например, чтобы посчитать формы, заполненные в январе 2026:
=СЧЁТЕСЛИМН(B2:B100; ">="&ДАТА(2026;1;1); B2:B100; "<="&ДАТА(2026;1;31))
Для динамического диапазона дат используйте таблицы Excel с фильтрами.
Как исключить тестовые отправки формы?
Если тестовые данные имеют уникальные признаки (например, email test@example.com или слово "Тест" в комментариях), используйте:
=СЧЁТЕСЛИМН(A2:A100; "<>test@example.com"; C2:C100; "Тест"; D2:D100; "<>Тест")
Где A — столбец с email, C — с комментариями, D — с именем.
Что делать, если данные в формате JSON или XML?
Для JSON:
- Импортируйте данные через
Данные → Получение данных → Из файла → Из JSON - В Power Query разверните вложенные структуры (кнопка
↗в заголовке столбца) - Преобразуйте в таблицу и используйте методы из этой статьи
Для XML используйте Импорт XML (может потребовать XSD-схему).
Как посчитать уникальных респондентов, если один человек мог отправлять форму несколько раз?
Если в данных есть уникальный идентификатор (email, телефон или ID сессии), используйте:
=СЧЁТЕСЛИ(УникальныйСтолбец; УникальныйСтолбец) - СЧЁТПУСТО(УникальныйСтолбец)
Или для точного подсчёта:
=СУММ(1/СЧЁТЕСЛИ(УникальныйСтолбец; УникальныйСтолбец & ""))
Внимание: вторая формула должна вводиться как массивная (нажмите Ctrl+Shift+Enter в старых версиях Excel).