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

Работа с большими таблицами в Microsoft Excel часто требует точечной обработки данных: где-то нужно просуммировать только числовые значения, где-то — убрать пустые строки перед печатью, а где-то просто визуально отделить цифры от текста. Выделение ячеек с числами и одновременное скрытие пустых — одна из самых востребованных операций, которая экономит часы ручной работы. Но как это сделать быстро, не перебирая каждую строку вручную?

Многие пользователи ошибочно полагают, что для этой задачи обязательно нужен VBA-скрипт или глубокие знания формул. На самом деле, даже в базовой версии Excel 2010 есть минимум 3 встроенных инструмента, которые справятся с задачей за 2-3 клика. А если добавить к ним современные функции вроде ФИЛЬТР или ПРОСМОТРХ, то процесс становится ещё проще. В этой статье разберём все актуальные способы — от элементарных до продвинутых, — а также расскажем, почему иногда "пустые" ячейки на самом деле не пустые и как это проверить.

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

  • 📌 Визуально пустые — где ничего не отображается, но может храниться формула типа = "" или пробел.
  • 📌 С нулевыми значениями — где стоит 0, но пользователь хочет их игнорировать.
  • 📌 С текстом, маскирующимся под пустоту — например, неразрывный пробел (CHAR(160)) или апостроф (').

Эти нюансы критично влияют на выбор метода. Например, стандартный фильтр по значению не увидит ячейку с формулой =ЕСЛИ(A1=0;""), хотя визуально она пустая. Поэтому ниже мы рассмотрим универсальные решения, работающие в 90% случаев.

📊 Какой версии Excel вы пользуетесь чаще всего?
Excel 2010-2016
Excel 2019/2021
Excel 365 (онлайн/десктоп)
Другая (указать в комментариях)

1. Способ: Фильтр по типу данных (самый быстрый)

Если вам нужно однократно выделить числовые ячейки и скопировать их или удалить пустые строки, этот метод подойдёт лучше всего. Он работает во всех версиях Excel, включая Excel for Mac, и не требует знания формул.

Алгоритм:

  1. Выделите диапазон ячеек (например, A1:D100).
  2. Перейдите на вкладку ДанныеФильтр (или нажмите Ctrl+Shift+L).
  3. Нажмите на стрелку фильтра в заголовке столбца и выберите "Числовые фильтры""Не равно...".
  4. В появившемся окне введите "" (две кавычки без пробела) и нажмите OK.

Теперь на экране останутся только строки с числами. Их можно выделить, скопировать или применить форматирование. Но есть подводный камень: этот метод не сработает, если в "пустых" ячейках хранятся формулы, возвращающие пустую строку (например, =ЕСЛИ(O1=0;"")). Для таких случаев нужен другой подход.

2. Способ: Условное форматирование для визуального выделения

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

Пошаговая инструкция:

  1. Выделите диапазон (например, B2:Z500).
  2. Перейдите на вкладку ГлавнаяУсловное форматированиеСоздать правило.
  3. Выберите тип правила: "Форматировать только ячейки, которые содержат".
  4. В выпадающем списке укажите "Числа" и настройте формат (например, зелёный фон).

Преимущество метода: работает даже с ячейками, где числа хранятся как текст (например, после импорта из CSV). Чтобы проверить это, попробуйте ввести в ячейку '123 (с апострофом) — условное форматирование её не подсветит, зато стандартный фильтр посчитает за число.

⚠️ Внимание: Условное форматирование не изменяет данные, а только их внешний вид. Если вам нужно физически удалить пустые ячейки, переходите к следующему способу.
Метод Работает с формулами Работает с текстом-"числами" Удаляет пустые ячейки
Фильтр по типу данных ❌ Нет ✅ Да ✅ Да (вручную)
Условное форматирование ✅ Да ❌ Нет (если текст) ❌ Нет
Функция ФИЛЬТР (Excel 365) ✅ Да ✅ Да ❌ Нет (копирует данные)

3. Способ: Функция ФИЛЬТР (только Excel 365 и 2021)

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

Формула для выделения чисел из диапазона A1:A100:

=ФИЛЬТР(A1:A100; ЕЧИСЛО(A1:A100))

Как это работает:

  • 📊 Функция ЕЧИСЛО проверяет каждую ячейку на наличие числа (включая даты и числа-тексты).
  • 📊 ФИЛЬТР возвращает только те строки, где условие истинно.
  • 📊 Результат обновляется автоматически при изменении исходных данных.

Критичный нюанс: если в ячейке формула, возвращающая пустую строку (например, =ЕСЛИ(B1=0;"")), функция ЕЧИСЛО вернёт ЛОЖЬ, и строка будет скрыта. Это отличает её от стандартного фильтра.

Как отфильтровать числа Игнорируя нули?

Используйте формулу:

=ФИЛЬТР(A1:A100; (ЕЧИСЛО(A1:A100))*(A1:A100<>0))

Здесь второй аргумент проверяет, что значение не равно нулю.

4. Способ: Power Query для сложных таблиц

Если ваша таблица содержит тысячи строк или данные импортируются из внешних источников (например, SQL или CSV), ручные методы становятся неэффективными. Здесь на помощь придёт Power Query — инструмент для трансформации данных, встроенный в Excel 2016+.

Инструкция:

  1. Выделите исходную таблицу и перейдите на вкладку ДанныеИз таблицы/диапазона (в группе Получить и преобразовать).
  2. В открывшемся редакторе Power Query выделите столбец с данными.
  3. Нажмите на стрелку в заголовке столбца → Фильтры числовых значенийНе равно → введите null (для пустых) или 0 (для нулей).
  4. Нажмите Закрыть и загрузить, чтобы вернуть отфильтрованные данные на новый лист.

Преимущества Power Query:

  • 🔄 Обрабатывает миллионы строк без зависаний.
  • 🔄 Сохраняет связь с исходными данными (обновляется по кнопке Обновить все).
  • 🔄 Можно создать шаблон и применять его к новым файлам.
⚠️ Внимание: После загрузки данных через Power Query исходная таблица не изменяется. Результат помещается на новый лист, что удобно для анализа, но требует дополнительного места в файле.

Удалить объединённые ячейки|Преобразовать диапазон в таблицу (Ctrl+T)|Проверить формат столбцов (текст/число/дата)|Сохранить резервную копию файла-->

5. Способ: VBA-скрипт для автоматизации

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

  • 📝 Выделяет все числовые ячейки в выбранном диапазоне.
  • 📝 Копирует их на новый лист.
  • 📝 Удаляет исходные пустые строки (опционально).

Код для вставки в VBA-редактор (Alt+F11):

Sub ВыделитьЧисла()

Dim rng As Range, cell As Range, outRng As Range

Dim ws As Worksheet

Dim i As Long, lastRow As Long

' Создаём новый лист для результата

Set ws = Worksheets.Add

ws.Name = "Числовые данные"

' Определяем диапазон (например, столбец A)

Set rng = Selection

i = 1

' Проходим по каждой ячейке

For Each cell In rng

If IsNumeric(cell.Value) And cell.Value <> "" Then

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

i = i + 1

End If

Next cell

' Опционально: удаляем пустые строки в исходном диапазоне

' Раскомментируйте следующие 3 строки, если нужно:

' lastRow = rng.Rows.Count

' For i = lastRow To 1 Step -1

' If Not IsNumeric(rng.Cells(i, 1).Value) Then rng.Cells(i, 1).EntireRow.Delete

' Next i

MsgBox "Готово! Числовые данные скопированы на лист '" & ws.Name & "'", vbInformation

End Sub

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

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. Вставьте код в модуль (InsertModule).
  3. Вернитесь в Excel, выделите диапазон и запустите макрос (Alt+F8 → выберите ВыделитьЧисла).

Макрос можно доработать под свои нужды. Например, добавить проверку на ненулевые значения или обработку нескольких столбцов. Для этого измените условие в строке If IsNumeric(cell.Value) And cell.Value <> "" Then.

6. Способ: Формулы массива для продвинутых пользователей

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

Пример формулы для извлечения чисел из диапазона A1:A100 в столбец B:

=ЕСЛИОШИБКА(ИНДЕКС($A$1:$A$100; ПОИСКПОЗ(ИСТИНА; ЕЧИСЛО($A$1:$A$100); 0)); "")

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

  1. ЕЧИСЛО($A$1:$A$100) — создаёт массив из ИСТИНА/ЛОЖЬ, где ИСТИНА соответствует числовым ячейкам.
  2. ПОИСКПОЗ(ИСТИНА; ...; 0) — находит позицию первого числового значения.
  3. ИНДЕКС — возвращает значение из исходного диапазона по найденной позиции.
  4. ЕСЛИОШИБКА — скрывает ошибки, если чисел нет.

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

=ЕСЛИОШИБКА(ИНДЕКС($A$1:$A$100; НАИМЕНЬШИЙ(ЕСЛИ(ЕЧИСЛО($A$1:$A$100); СТРОКА($A$1:$A$100)-МИН(СТРОКА($A$1:$A$100))+1; ""); СТРОКА(A1))); "")

Эта формула вернёт все числовые значения по порядку, игнорируя пустые ячейки и текст. Но будьте осторожны: в старых версиях Excel (до 2019) формулы массива требуют подтверждения клавишами Ctrl+Shift+Enter.

Частые ошибки и как их избежать

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

  • 🚫 "Фильтр не находит числа, хотя они есть" → Проверьте формат ячеек: если числа хранятся как текст (выровнены по левому краю), используйте =ЗНАЧЕН() для преобразования.
  • 🚫 "Удаляются строки с формулами, возвращающими 0" → В условии фильтра добавьте проверку И(ЕЧИСЛО(A1); A1<>0).
  • 🚫 "VBA-скрипт работает медленно на больших данных" → Отключите обновление экрана в начале макроса: Application.ScreenUpdating = False.
  • 🚫 "Power Query не видит пустые ячейки" → В настройках столбца замените пустые значения на null вручную.

Ещё одна типичная ошибка — игнорирование скрытых символов. Например, ячейка может выглядеть пустой, но содержать:

  • 📌 Неразрывный пробел (CHAR(160)) — часто встречается после копирования из Word.
  • 📌 Апостроф (') — используется для принудительного текстового формата.
  • 📌 Символ табуляции или перевода строки.

Чтобы обнаружить такие "невидимки", используйте функцию =КОДСИМВ(ЛЕВСИМВ(A1)) — она вернёт код первого символа в ячейке. Если результат не #ЗНАЧ! (ошибка для пустой ячейки), значит, там что-то есть.

=ПЕЧСИМВ(A1)

или макрос:

Sub CleanCells()

Dim cell As Range

For Each cell In Selection

cell.Value = Trim(Clean(cell.Value))

Next cell

End Sub

Function Clean(s As String) As String

Clean = Replace(s, Chr(160), " ")

Clean = Replace(Clean, Chr(9), " ")

Clean = Replace(Clean, Chr(10), " ")

Clean = Replace(Clean, Chr(13), " ")

End Function

-->

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

Можно ли выделить числа в защищённом листе?

Да, но с ограничениями. Если лист защищён от изменений, вы не сможете:

  • 🔒 Применять условное форматирование (если не разрешено в настройках защиты).
  • 🔒 Удалять строки через фильтр.

Решение: используйте функцию ФИЛЬТР (Excel 365) или Power Query — они не требуют изменения исходных данных. Также можно создать копию листа (ПКМ → Переместить/скопировать) и работать с ней.

Почему функция ЕЧИСЛО возвращает ЛОЖЬ для ячейки с числом?

Это происходит в трёх случаях:

  1. Ячейка отформатирована как текст, и число хранится как строка (например, '123). Исправьте формат на Общий или используйте =ЗНАЧЕН(A1).
  2. В ячейке формула, возвращающая пустую строку (например, =ЕСЛИ(B1=0;"")). Здесь ЕЧИСЛО вернёт ЛОЖЬ, хотя визуально ячейка пустая.
  3. Число хранится как дата (например, 01.01.2023). Используйте =ЕДАТА() для проверки.
Как выделить числа в столбце, игнорируя заголовки?

Если в первой строке таблицы заголовок (например, "Цена"), исключите её из диапазона:

  • 📌 В фильтре: выделите диапазон со второй строки (A2:A100).
  • 📌 В формуле: используйте =ФИЛЬТР(A2:A100; ЕЧИСЛО(A2:A100)).
  • 📌 В VBA: начните цикл с For Each cell In Range("A2:A" & lastRow).

Чтобы автоматически определить последнюю строку с данными, используйте:

lastRow = Cells(Rows.Count, 1).End(xlUp).Row
Можно ли сохранить форматирование при копировании числовых ячеек?

Да, но нужно использовать специальную вставку:

  1. Выделите отфильтрованные числовые ячейки.
  2. Скопируйте их (Ctrl+C).
  3. Кликните правой кнопкой по целевой ячейке → Специальная вставкаФорматы.

Если используете Power Query или VBA, форматирование не сохраняется — только значения. В этом случае после копирования данных примените условное форматирование заново.

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

Используйте динамические формулы массива (Excel 365) или Power Query:

  • 🔄 Формула ФИЛЬТР обновляется автоматически при изменении исходного диапазона.
  • 🔄 Power Query: нажмите Обновить все на вкладке Данные или настройте автоматическое обновление (Свойства соединения → Обновить каждые N минут).

Для VBA добавьте в код обработчик событий:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A1:A100")) Is Nothing Then

ВыделитьЧисла ' Вызов вашего макроса

End If

End Sub

Этот код будет запускать макрос при каждом изменении в диапазоне A1:A100.