Как удалить строки через одну в Excel: от фильтра до VBA

Удаление строк через одну в Microsoft Excel требуется при обработке больших таблиц, где нужно оставить только четные или нечетные записи — например, при разделении дублирующихся данных, подготовке отчетов с чередующимися строками или очистке лог-файлов. Если вы пытаетесь вручную выделить и удалить каждую вторую строку в таблице из 10 000 записей, это займет часы. К счастью, в Excel есть минимум 5 способов автоматизировать процесс: от простого фильтра по номеру строки до макросов на VBA, которые справятся с задачей за секунды.

Самый быстрый метод зависит от структуры ваших данных. Если в таблице есть столбец с порядковыми номерами (или его можно добавить), подойдет фильтрация по четности/нечетности. Для таблиц без номеров эффективнее использовать Специальную вставку с формулами или макрос. Ниже разобраны все варианты — от базовых до продвинутых, с учетом нюансов разных версий Excel (2010–2023 и Office 365).

1. Удаление строк через одну с помощью вспомогательного столбца

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

Шаги:

  • 📌 Вставьте новый столбец слева от таблицы (кликните правой кнопкой по заголовку столбца AВставить).
  • 🔢 В ячейку A2 введите формулу =СТРОКА()-1 (если данные начинаются со строки 2). Растяните формулу до конца таблицы.
  • 🔍 Выделите заголовок вспомогательного столбца → ДанныеФильтр.
  • 📉 Нажмите на стрелочку фильтра в столбце AЧисловые фильтрыРавно → введите 0 (для нечетных строк) или 1 (для четных).
  • ✂️ Выделите все видимые строки (кроме заголовков) → правая кнопка → Удалить строки.

После удаления не забудьте убрать фильтр (ДанныеФильтр) и удалить вспомогательный столбец. Метод работает даже в Excel Online, где нет поддержки макросов.

Добавлен вспомогательный столбец слева от данных|Формула =СТРОКА()-1 применена ко всем строкам|Включен фильтр по новому столбцу|Выбрано условие "Равно 0" или "Равно 1"|Удалены только видимые строки (кроме заголовков)-->

⚠️ Внимание: Если ваша таблица начинается не со строки 1 (например, с строки 5), скорректируйте формулу: =СТРОКА()-4. Иначе номера строк будут сбиты, и фильтр удалит не те данные.

2. Использование формулы МОД (OSTAT) для чередующихся строк

Функция МОД (или OSTAT в русских версиях Excel) возвращает остаток от деления и идеально подходит для определения четности. Этот способ точнее, чем простая нумерация, если в таблице есть скрытые или объединенные строки.

Инструкция:

  1. Добавьте вспомогательный столбец справа от данных.
  2. В первую ячейку столбца (например, B2) введите:
    =МОД(СТРОКА();2)

    Растяните формулу на все строки.

  3. Отфильтруйте столбец по значению 0 (четные строки) или 1 (нечетные).
  4. Удалите видимые строки, затем удалите вспомогательный столбец.

Преимущество метода: формула МОД корректно обрабатывает таблицы с пропущенными строками или заголовками. Например, если данные начинаются с строки 10, формула все равно вернет 0 для четных строк относительно начала таблицы, а не листа.

Номер строкиФормула =МОД(СТРОКА();2)Результат фильтра
10=МОД(10;2)0 (четная)
11=МОД(11;2)1 (нечетная)
12=МОД(12;2)0 (четная)
13=МОД(13;2)1 (нечетная)

3. Удаление строк через одну без вспомогательных столбцов

Если нельзя добавлять столбцы (например, в защищенных файлах), используйте специальную вставку с формулами. Метод требует аккуратности, но сохраняет исходную структуру таблицы.

Алгоритм:

  • 📋 Выделите диапазон данных (например, A1:C100).
  • 🔍 Нажмите Ctrl + GВыделитьВидимые ячейки (если есть скрытые строки).
  • 📝 В строку формул введите =МОД(СТРОКА();2) и нажмите Ctrl + Enter — формула применится ко всем выделенным ячейкам.
  • 🔎 Отфильтруйте данные по значению 0 или 1 (как в предыдущем методе).
  • ✂️ Удалите видимые строки, затем отмените изменения (Ctrl + Z) — формулы исчезнут, а строки останутся удаленными.
⚠️ Внимание: Этот метод временно заменяет данные в ячейках на результаты формулы. Если не нажать Ctrl + Z сразу после удаления, исходные данные будут утеряны! Не используйте способ для таблиц с важной информацией без резервной копии.

4. Макрос VBA для удаления строк через одну

Для больших таблиц (100 000+ строк) ручные методы работают медленно. Макрос на VBA удалит строки через одну за доли секунды. Подходит для Excel 2010–2023 и Office 365.

Код макроса для удаления четных строк:

Sub DeleteEveryOtherRow()

Dim rng As Range, row As Range

Dim i As Long, lastRow As Long

Dim ws As Worksheet

Set ws = ActiveSheet

lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

Set rng = ws.Range("A2:A" & lastRow)

For i = rng.Rows.Count To 1 Step -1

If i Mod 2 = 0 Then

rng.Cells(i).EntireRow.Delete

End If

Next i

End Sub

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

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. В меню выберите InsertModule.
  3. Вставьте код выше и закройте редактор.
  4. Вернитесь в Excel, нажмите Alt + F8, выберите макрос DeleteEveryOtherRow и нажмите Выполнить.

Чтобы удалить нечетные строки, замените в коде If i Mod 2 = 0 на If i Mod 2 = 1. Макрос работает только с активным листом — убедитесь, что вы на нужном листе перед запуском.

Вспомогательный столбец с нумерацией|Формулу МОД (OSTAT)|Макрос VBA|Горячие клавиши (без столбцов)|Другой способ-->

5. Горячие клавиши и быстрые приемы

Если нужно удалить строки через одну в небольшой таблице (до 1 000 строк), можно обойтись без формул и макросов. Вот 3 быстрых способа:

  • 🔑 Выделение мышью + Delete: Зажмите Ctrl и кликайте по номерам строк через одну (например, 2, 4, 6...). Затем правая кнопка → Удалить. Подходит для таблиц до 50 строк.
  • 📋 Специальная вставка: Скопируйте диапазон строк, которые нужно оставить (например, нечетные). Вставьте их на новый лист через Специальная вставкаЗначения.
  • 🔍 Поиск и выделение: Нажмите Ctrl + F, введите уникальное значение из строк, которые нужно удалить (например, слово из четных строк). В результатах поиска нажмите Ctrl + A, чтобы выделить все вхождения, затем удалите строки.

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

Как удалить строки через одну в Google Sheets?

В Google Таблицах алгоритм аналогичен Excel, но есть нюансы:

1. Вспомогательный столбец создается так же, но формула будет =MOD(ROW();2).

2. Для удаления строк через одну используйте Google Apps Script (аналог VBA). Пример кода:

function deleteEveryOtherRow() {

var sheet = SpreadsheetApp.getActiveSheet();

var lastRow = sheet.getLastRow();

for (var i = lastRow; i >= 2; i--) {

if (i % 2 == 0) sheet.deleteRow(i);

}

}

3. Горячие клавиши в Google Sheets отличаются: вместо Ctrl + G для выделения видимых ячеек используйте Alt + ; (выделить видимые).

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

При удалении строк через одну пользователи часто сталкиваются с тремя проблемами:

  1. Удалены не те строки: Это происходит, если в таблице есть скрытые строки или объединенные ячейки. Перед удалением нажмите Ctrl + A (выделить все) → ГлавнаяФорматОтменить скрытие.
  2. Сбилась нумерация: Если вы добавили вспомогательный столбец с формулой =СТРОКА(), но забыли скорректировать смещение (например, -1), номера строк будут неверными. Всегда проверяйте первую ячейку столбца.
  3. Макрос не работает: В Excel 2016+ макросы по умолчанию отключены. Чтобы включить их, перейдите в ФайлПараметрыЦентр управления безопасностьюПараметры центра управления безопасностьюВключить все макросы (не рекомендуется для недоверенных файлов).

Еще одна типичная ошибка — удаление строк в таблице с привязанными данными (например, сводные таблицы или диаграммы). Если после удаления строки диаграмма отображает #Н/Д, обновите источник данных: кликните по диаграмме → КонструкторВыбрать данные → обновите диапазон.

7. Альтернативные решения для специфических задач

Иногда удаление строк через одну — не конечная цель, а часть более сложной задачи. Рассмотрим 3 распространенных сценария:

  • 📊 Разделение чередующихся данных: Если в таблице попеременно идут, например, "Наименование" и "Цена", используйте Текст по столбцам (ДанныеТекст по столбцам) с разделителем "перевод строки".
  • 🔄 Транспонирование чередующихся строк: Чтобы преобразовать строки в столбцы через одну, используйте формулу =ТРАНСП(ФИЛЬТР(диапазон;МОД(СТРОКА(диапазон);2)=0))Excel 365).
  • 📈 Построение графика по чередующимся данным: Вместо удаления строк скрывайте их (ГлавнаяФорматСкрыть строки). График будет построен только по видимым данным.

Если задача — не просто удалить строки, а объединить чередующиеся данные (например, ФИО и адрес в одной строке), используйте формулу:

=СЦЕПИТЬ(A2; " "; A3)

Затем скопируйте результаты и вставьте как значения (Специальная вставкаЗначения).

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

Можно ли удалить строки через одну без вспомогательного столбца?

Да, с помощью специальной вставки (метод 3) или макроса VBA (метод 4). Однако вспомогательный столбец — самый надежный способ, особенно для новичков, так как позволяет отменить действия (Ctrl + Z) на любом этапе.

Почему после удаления строк сбились формулы в таблице?

Формулы в Excel автоматически корректируются при удалении строк, но если в них использовались абсолютные ссылки (например, $A$1), они не изменятся. Перед удалением замените абсолютные ссылки на относительные (например, A1).

Как удалить строки через одну в защищенном листе?

В защищенном листе нельзя добавлять столбцы или запускать макросы. Единственный способ — скопировать данные на новый лист (Ctrl + CCtrl + N для нового листа → Ctrl + V), затем применить любой метод удаления.

Макрос удаляет не те строки. Как исправить?

Проверьте два параметра в коде VBA:

  1. Диапазон строк: в примере выше используется столбец A. Если ваши данные начинаются с другого столбца, измените Range("A2:A" & lastRow) на актуальный (например, "C2:C" & lastRow).
  2. Условие четности: для удаления нечетных строк замените If i Mod 2 = 0 на If i Mod 2 = 1.

Есть ли разница между Excel 2019 и Excel 365 при удалении строк?

Основные методы (фильтр, формулы, VBA) работают одинаково. Однако в Excel 365 доступны динамические массивы, которые упрощают задачу. Например, можно использовать формулу:

=ФИЛЬТР(A2:B100;МОД(СТРОКА(A2:A100);2)=0)

чтобы сразу получить отфильтрованные данные без удаления строк.