Как найти все числа в Excel: от фильтров до VBA-скриптов

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

Проблема поиска чисел усложняется, когда данные смешаны: в одной колонке могут быть текст, даты, проценты и числа в разных форматах. Стандартный поиск по Ctrl+F здесь не поможет — он ищет конкретные значения, а не типы данных. Мы покажем, как обойти это ограничение с помощью фильтров, условного форматирования, функций ЕЧИСЛО и даже Power Query. А для автоматизации рутинных задач приведем готовые VBA-скрипты.

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

1. Поиск чисел через фильтр: быстрый способ для небольших таблиц

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

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

  • 📌 Выделите диапазон данных (включая заголовки столбцов).
  • 🔍 Перейдите на вкладку Данные → нажмите Фильтр (или используйте горячие клавиши Ctrl+Shift+L).
  • 📊 В выпадающем списке столбца выберите Числовые фильтрыРавно... или Больше... (любой числовой критерий).
  • 🔢 В поле значения введите 0 (или любое другое число), но вместо нажатия ОК просто посмотрите на результат фильтрации — Excel автоматически покажет все ячейки с числами в этом столбце.

Этот метод подходит для визуального анализа, но имеет ограничения:

  • ❌ Не работает, если числа хранятся как текст (например, после импорта из CSV).
  • ❌ Не позволяет сразу выделить или скопировать все найденные числа.
  • ❌ Фильтрует только по одному столбцу за раз.
⚠️ Внимание: Если после применения фильтра числа не отображаются, проверьте формат ячеек. Числа, отформатированные как текст (с зелёным треугольником в углу), не будут распознаны как числовые данные. Исправьте это через Главная → Формат → Формат ячеек → Числовой.
📊 Какой инструмент Excel вы используете чаще всего?
Фильтры
Формулы
Сводные таблицы
Условное форматирование
VBA

2. Условное форматирование: визуальное выделение чисел

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

Инструкция:

  1. Выделите диапазон данных (например, A1:Z1000).
  2. Перейдите на вкладку ГлавнаяУсловное форматированиеСоздать правило.
  3. В окне правила выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу:
    =ЕЧИСЛО(A1)

    (где A1 — первая ячейка выделенного диапазона; Excel автоматически скорректирует адресацию для остальных ячеек).

  5. Нажмите Формат, выберите цвет заливки (например, жёлтый) и нажмите ОК.

Результат: все ячейки с числами будут подсвечены. Этот метод удобен для визуального контроля больших таблиц, где числа «теряются» среди текста.

Убедитесь, что в диапазоне нет пустых строк

Проверьте формат ячеек (числа не должны быть текстом)

Выберите контрастный цвет заливки (например, светло-зелёный)

Примените правило ко всему листу, если данные разбросаны-->

Если числа хранятся как текст, используйте модифицированную формулу:

=ЕОШИБКА(ЗНАЧЕН(A1))=ЛОЖЬ

Она преобразует текстовые числа в числовой формат и проверяет успешность операции.

3. Функция ЕЧИСЛО и её применение в формулах

Функция ЕЧИСЛО — это основной инструмент для проверки, является ли содержимое ячейки числом. Она возвращает ИСТИНА, если ячейка содержит число, и ЛОЖЬ в противном случае. Её можно использовать как самостоятельно, так и в комбинации с другими функциями.

Примеры применения:

Задача Формула Пример результата
Проверить, является ли ячейка числом =ЕЧИСЛО(A1) ИСТИНА (если в A1 число 10)
Посчитать количество чисел в диапазоне =СЧЁТЕСЛИ(A1:A100; "<>"&"") или =СУММПРОИЗВ(--ЕЧИСЛО(A1:A100)) 42 (если в диапазоне 42 числа)
Суммировать только числовые ячейки =СУММЕСЛИ(A1:A100; "<>"&""; B1:B100) или =СУММПРОИЗВ(B1:B100; --ЕЧИСЛО(A1:A100)) 1500 (сумма чисел из столбца B, где в A — числа)
Извлечь числа из текстовой строки =--ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1; "а"; ""); "б"; ""); ...) (удалить все буквы) 12345 (из строки "abc12345def")

Для извлечения чисел из текстовых строк (например, "Заказ №12345") используйте комбинацию функций ПОДСТАВИТЬ, ПСТР и НАЙТИ. Однако для больших объёмов данных лучше использовать Power Query (см. раздел 5).

⚠️ Внимание: Функция ЕЧИСЛО возвращает ИСТИНА даже для дат и времени, так как в Excel они хранятся как числа. Чтобы исключить даты, комбинируйте её с ЕДАТА или ЕВРЕМЯ:

=И(ЕЧИСЛО(A1); НЕ(ЕДАТА(A1)))

4. Поиск чисел с помощью функции НАЙТИ и подстановочных знаков

Если числа в вашей таблице хранятся как часть текста (например, "Артикул: 12345"), стандартные методы вроде ЕЧИСЛО не сработают. В этом случае поможет комбинация функций НАЙТИ, ПОИСК и ЕОШИБКА.

Пример формулы для проверки, содержит ли ячейка хотя бы одну цифру:

=НЕ(СУММПРОИЗВ(--ЕОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9}; A1))) = 10)

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

  1. Функция НАЙТИ ищет в ячейке A1 каждую цифру от 0 до 9.
  2. ЕОШИБКА возвращает ИСТИНА, если цифра не найдена.
  3. СУММПРОИЗВ считает количество ошибок (ненайденных цифр).
  4. Если все 10 цифр не найдены, результат будет 10, и формула вернёт ЛОЖЬ. В противном случае — ИСТИНА.

Для извлечения первого числа из текстовой строки используйте:

=ЗНАЧЕН(ПСТР(A1; МИН(ЕСЛИОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9}; A1); "")); СЧЁТЕСЛИ(--ПОДСТАВИТЬ(ПСТР(A1; МИН(ЕСЛИОШИБКА(НАЙТИ({0;1;2;3;4;5;6;7;8;9}; A1); "")); 100); {"0";"1";"2";"3";"4";"5";"6";"7";"8";"9"}; ""); "≠")))

Эта формула работает как массив и требует подтверждения Ctrl+Shift+Enter в старых версиях Excel.

5. Power Query: продвинутый поиск и преобразование чисел

Если вам нужно не просто найти, а преобразовать или агрегировать числа из больших наборов данных, Power Query (доступен в Excel 2016+ и Excel 365) станет идеальным решением. Этот инструмент позволяет:

  • 🔍 Находить числа в текстовых строках и извлекать их.
  • 📊 Фильтровать таблицы по числовым значениям.
  • 🔄 Преобразовывать текстовые числа в числовой формат.
  • 📤 Экспортировать результаты в новую таблицу.

Пошаговая инструкция для извлечения чисел из текста:

  1. Выделите исходные данные и перейдите на вкладку ДанныеИз таблицы/диапазона (в группе Получить и преобразовать данные).
  2. В открывшемся окне Power Query выделите столбец с текстовыми данными.
  3. Перейдите на вкладку ПреобразоватьИзвлечьТекст после делителя (если числа идут после определённого символа, например, "№").
  4. Или используйте Добавить столбецИзвлечениеТекст между делителями, указав в качестве делителей символы, окружающие число.
  5. Преобразуйте новый столбец в числовой формат: выделите его → ПреобразоватьТип данных: Целое число.
  6. Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.

Power Query автоматически обновляет результаты при изменении исходных данных — это идеальный инструмент для регулярной обработки отчётов.

Как извлечь все числа из строки типа "А12Б34В56"

1. В Power Query добавьте пользовательский столбец с формулой:

= Text.Select([Column1], {"0".."9"})

2. Преобразуйте результат в числовой формат.

3. При необходимости разбейте полученную строку на отдельные числа с помощью Разделить столбец → По количеству символов (указав длину каждого числа).

6. Макросы VBA: автоматизация поиска чисел

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

  • 🔍 Находит все числовые ячейки в выделенном диапазоне.
  • 🎨 Выделяет их цветом.
  • 📋 Копирует значения в новый лист.

Код макроса:

Sub FindAndHighlightNumbers()

Dim rng As Range, cell As Range

Dim ws As Worksheet

Dim i As Integer

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

Set ws = Worksheets.Add

ws.Name = "Числа_найдены"

i = 1

' Проходим по выделенному диапазону

For Each cell In Selection

If IsNumeric(cell.Value) And Not IsEmpty(cell.Value) Then

' Выделяем ячейку цветом

cell.Interior.Color = RGB(255, 255, 0) ' Жёлтый

' Копируем значение на новый лист

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

ws.Cells(i, 2).Value = cell.Address

i = i + 1

End If

Next cell

' Форматируем лист с результатами

ws.Columns("A:B").AutoFit

ws.Range("A1:B1").Value = Array("Значение", "Адрес ячейки")

ws.Range("A1:B1").Font.Bold = True

End Sub

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

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

Макрос создаст новый лист с двумя колонками: Значение (само число) и Адрес ячейки (где оно было найдено). Все числовые ячейки в исходной таблице будут подсвечены жёлтым.

⚠️ Внимание: Перед запуском макроса сохраните файл в формате .xlsm (с поддержкой макросов), иначе Excel заблокирует выполнение кода. Также отключите защиту листа, если она включена — макрос не сможет изменять ячейки.

7. Поиск чисел в защищённых листах и скрытых ячейках

Если лист защищён или числа скрыты (например, в сводных таблицах), стандартные методы поиска могут не сработать. В этом случае:

Для защищённых листов:

  • 🔓 Временно снимите защиту: Рецензирование → Снять защиту листа (потребуется пароль, если он установлен).
  • 🔍 Примените один из методов, описанных выше (например, условное форматирование).
  • 🔒 Верните защиту: Рецензирование → Защитить лист.

Для скрытых строк/столбцов:

  • 👁️ Отобразите скрытые данные: выделите диапазон, включающий скрытые строки/столбцы → правая кнопка мыши → Показать.
  • 🔢 Используйте функцию ПОИСКПОЗ для поиска чисел в скрытых областях:
    =ЕСЛИ(ЕЧИСЛО(ДВССЫЛ("A" & ПОИСКПОЗ(ИСТИНА; ЕЧИСЛО(A:A); 0))); ДВССЫЛ("A" & ПОИСКПОЗ(ИСТИНА; ЕЧИСЛО(A:A); 0)); "Нет чисел")

    Эта формула находит первое число в столбце A, даже если строка скрыта.

Для сводных таблиц:

  • 📊 Дважды кликните по числовому значению в сводной таблице — Excel откроет новый лист с детализацией данных, где можно применить фильтры или условное форматирование.
  • 🔍 Используйте ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ (GETPIVOTDATA), чтобы извлечь числа в отдельный диапазон:
    =ПОЛУЧИТЬ.ДАННЫЕ.СВОДНОЙ.ТАБЛИЦЫ("Сумма"; $A$3)

Сравнение методов: какой выбрать?

Выбор метода зависит от размера данных, структуры таблицы и цели поиска. Ниже сравнительная таблица:

Метод Скорость Подходит для больших данных Требует знания формул Автоматизация Когда использовать
Фильтр ⭐⭐⭐ ❌ (до 10 000 строк) Быстрый визуальный анализ
Условное форматирование ⭐⭐⭐ ⭐ (до 50 000 строк) ⭐ (нужна формула ЕЧИСЛО) Выделение чисел цветом
Функции (ЕЧИСЛО, СЧЁТЕСЛИ) ⭐⭐ ⭐⭐ (до 100 000 строк) ⭐⭐ Подсчёт или суммирование чисел
Power Query ⭐⭐⭐⭐ ⭐⭐⭐⭐ (миллионы строк) ⭐⭐ ⭐⭐⭐ (обновляется автоматически) Извлечение и преобразование чисел
VBA ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐ ⭐⭐⭐⭐⭐ Регулярная обработка больших файлов

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

FAQ: Частые вопросы о поиске чисел в Excel

🔹 Почему Excel не находит числа в ячейках, где они есть?

Скорее всего, числа хранятся как текст. Проверьте это по зелёному треугольнику в углу ячейки или через Формат ячеек. Чтобы исправить:

  1. Выделите проблемные ячейки.
  2. Нажмите на восклицательный знак рядом с ячейкой → Преобразовать в число.
  3. Или используйте формулу =ЗНАЧЕН(A1) в соседнем столбце и скопируйте значения обратно.
🔹 Как найти числа в диапазоне, игнорируя даты?

Даты в Excel хранятся как числа, поэтому ЕЧИСЛО распознаёт их как числовые данные. Чтобы исключить даты, используйте комбинацию:

=И(ЕЧИСЛО(A1); A1 < ДАТА(1900;1;1))

Эта формула проверяет, что значение — число, но меньше минимальной даты в Excel (01.01.1900).

🔹 Можно ли найти числа в защищённом файле без снятия защиты?

Нет, если лист защищён от изменений, то и условное форматирование, и макросы не смогут модифицировать ячейки. Альтернативные варианты:

  • Создайте копию файла и снимите защиту с неё.
  • Используйте Power Query для импорта данных из защищённого файла в новый (данные будут скопированы без защиты).
  • Если у вас есть права администратора, запросите пароль у владельца файла.
🔹 Как извлечь все числа из текста вида "123abc456def789"?

Для такого формата подойдёт формула массива (вводится с Ctrl+Shift+Enter в старых версиях Excel):

=ТЕКСТСОЕДИНИТЬ(""; ИСТИНА; ЕСЛИОШИБКА(--ПСТР(A1; СТРОКА(ДВССЫЛ("1:100")); 1); ""))

Или используйте Power Query с пользовательской функцией на языке M:

= Text.Select([Column1], {"0".."9"})
🔹 Почему макрос не находит числа в ячейках с формулами?

Макрос из раздела 6 проверяет значения ячеек, а не формулы. Если ячейка содержит формулу типа =СУММ(B1:B10), но результат — число, макрос его найдёт. Если же формула возвращает текст (например, =ЕСЛИ(B1=0; "Нет"; B1)), то:

  • Исправьте формулу, чтобы она всегда возвращала число.
  • Или модифицируйте макрос, добавив проверку cell.HasFormula и вычисление значения через cell.Value2.