Как удалить пустые строки в Excel с помощью VBA, формул и Power Query

  • Поделись Этим
Michael Brown

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

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

    Как НЕ удалять пустые строки в Excel

    Существует несколько различных способов удаления пустых строк в Excel, но на удивление многие интернет-ресурсы придерживаются самого опасного из них, а именно Найти и выбрать > Перейти к специальному > Заготовки .

    Что не так в этой технике? Она выбирает все заготовки в диапазоне, и, следовательно, в итоге вы удалите все строки, содержащие хоть одну пустую ячейку.

    На рисунке ниже показана исходная таблица слева и результирующая таблица справа. В результирующей таблице исчезли все неполные строки, даже строка 10, где отсутствовала только дата в столбце D:

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

    Как удалить пустые строки в Excel с помощью VBA

    Excel VBA может исправить множество вещей, включая несколько пустых строк. Самое лучшее в этом подходе то, что он не требует никаких навыков программирования. Просто возьмите один из приведенных ниже кодов и запустите его в Excel (инструкции здесь).

    Макрос 1. Удаление пустых строк в выбранном диапазоне

    Этот код VBA молча удаляет все пустые строки в выбранном диапазоне, не показывая пользователю никакого сообщения или диалогового окна.

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

    Public Sub DeleteBlankRows() Dim SourceRange As Range Dim EntireRow As Range Set SourceRange = Application.Selection If Not (SourceRange Is Nothing ) Then Application.ScreenUpdating = False For I = SourceRange.Rows.Count To 1 Step -1 Set EntireRow = SourceRange.Cells(I, 1).EntireRow If Application.WorksheetFunction.CountA(EntireRow) = 0 Then EntireRow.Delete End If Next Application.ScreenUpdating= True End If End Sub

    Предоставить пользователю возможность выбрать целевой диапазон после запуска макроса используйте этот код:

    Public Sub RemoveBlankLines() Dim SourceRange As Range Dim EntireRow As Range On Error Resume Next Set SourceRange = Application.InputBox( _ "Select a range:" , "Delete Blank Rows" , _ Application.Selection.Address, Type :=8) If Not (SourceRange Is Nothing ) Then Application.ScreenUpdating = False For I = SourceRange.Rows.Count To 1 Step -1 Set EntireRow = SourceRange.Cells(I, 1).EntireRow IfApplication.WorksheetFunction.CountA(EntireRow) = 0 Then EntireRow.Delete End If Next Application.ScreenUpdating = True End If End Sub

    После запуска макрос отображает следующее поле ввода, вы выбираете целевой диапазон и нажимаете OK:

    Через мгновение все пустые строки в выбранном диапазоне будут удалены, а оставшиеся сдвинутся вверх:

    Макрос 2. Удаление всех пустых строк в Excel

    Для удаления все пустые строки на активный лист , определить последнюю строку используемого диапазона (т.е. строку, содержащую последнюю ячейку с данными), а затем перейти вверх, удаляя строки, для которых CountA возвращает ноль:

    Sub DeleteAllEmptyRows() Dim LastRowIndex As Integer Dim RowIndex As Integer Dim UsedRng As Range Set UsedRng = ActiveSheet.UsedRange LastRowIndex = UsedRng.Row - 1 + UsedRng.Rows.Count Application.ScreenUpdating = False For RowIndex = LastRowIndex To 1 Step -1 If Application.CountA(Rows(RowIndex)) = 0 Then Rows(RowIndex).Delete End If Next RowIndex Application.ScreenUpdating = True End Sub

    Макрос 3. Удаление строки, если ячейка пуста

    С помощью этого макроса можно удалить всю строку, если ячейка в указанном столбце пуста.

    Следующий код проверяет столбец А на наличие пробелов. Чтобы удалить строки на основе другого столбца, замените "А" на соответствующую букву.

    Sub DeleteRowIfCellBlank() On Error Resume Next Columns("A" ).SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Sub

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

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

    Как удалить пустые строки в Excel с помощью VBA

    Чтобы удалить пустые строки в Excel с помощью макроса, вы можете либо вставить код VBA в свою собственную рабочую книгу, либо запустить макрос из нашего образца рабочей книги.

    Добавьте макрос в рабочую книгу

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

    1. Откройте рабочий лист, на котором нужно удалить пустые строки.
    2. Нажмите Alt + F11, чтобы открыть редактор Visual Basic.
    3. На левой панели щелкните правой кнопкой мыши ThisWorkbook , а затем нажмите Вставка > Модуль .
    4. Вставьте код в окно Код.
    5. Нажмите F5, чтобы запустить макрос.

    Подробные пошаговые инструкции см. в статье Как вставить и использовать VBA в Excel.

    Запустите макрос из нашего образца рабочей книги

    Загрузите наш образец рабочей книги с макросом для удаления пустых строк и запустите один из следующих макросов из него:

    DeleteBlankRows - удаляет пустые строки в текущем выбранном диапазоне.

    RemoveBlankLines - удаляет пустые строки и сдвигает вверх в диапазоне, который вы выбираете после запуска макроса.

    DeleteAllEmptyRows - удаляет все пустые строки на активном листе.

    DeleteRowIfCellBlank - удаляет строку, если ячейка в определенном столбце пуста.

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

    1. Откройте загруженную рабочую книгу и при появлении запроса включите макросы.
    2. Откройте собственную рабочую книгу и перейдите к интересующему вас рабочему листу.
    3. В рабочем листе нажмите Alt + F8, выберите макрос и нажмите кнопку Запускайте .

    Формула для удаления пустых строк в Excel

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

    =IF(COUNTA(A2:D2)=0, "Пусто", "Не пусто")

    Где A2 - первая, а D2 - последняя используемая ячейка первого ряда данных.

    Введите эту формулу в E2 или любой другой пустой столбец в строке 2 и перетащите ручку заполнения, чтобы скопировать формулу вниз.

    В результате вы получите "Пусто" в пустых строках и "Не пусто" в строках, содержащих хотя бы одну ячейку с данными:

    Логика формулы очевидна: вы подсчитываете непустые ячейки с помощью функции COUNTA и используете оператор IF, чтобы вернуть "Пусто" при нулевом количестве, "Не пусто" в противном случае.

    На самом деле, вы можете прекрасно обойтись и без IF:

    =COUNTA(A2:D2)=0

    В этом случае формула будет возвращать TRUE для пустых строк и FALSE для непустых.

    При наличии формулы выполните следующие действия для удаления пустых строк:

    1. Выберите любую ячейку в строке заголовка и нажмите кнопку Сортировка и фильтр > Фильтр на Главная во вкладке Форматы Это добавит выпадающие стрелки фильтрации во все ячейки заголовка.
    2. Нажмите стрелку в заголовке столбца формул, снимите флажок (Выбрать все), выберите Пустой и нажмите OK :
    3. Выберите все отфильтрованные строки. Для этого щелкните по первой ячейке первой отфильтрованной строки и нажмите Ctrl + Shift + End, чтобы расширить выделение до последней ячейки последней отфильтрованной строки.
    4. Щелкните правой кнопкой мыши по выделению, выберите Удалить строку из контекстного меню, а затем подтвердите, что вы действительно хотите удалить целые строки:
    5. Удалите фильтр, нажав Ctrl + Shift + L. Или нажмите кнопку Главная вкладка> Сортировка и фильтр > Фильтр .
    6. Удалите столбец с формулой, поскольку он вам больше не нужен.

    Вот и все! В результате у нас получилась чистая таблица без пустых строк, но вся информация сохранена:

    Совет. Вместо того чтобы удалять пустые строки, вы можете копировать непустые строки в другое место. Чтобы сделать это, отфильтруйте строки "Не пустые", выделите их и нажмите Ctrl + C для копирования. Затем перейдите на другой лист, выделите левую верхнюю ячейку диапазона назначения и нажмите Ctrl + V для вставки.

    Как удалить пустые строки в Excel с помощью Power Query

    В Excel 2016 и Excel 2019 есть еще один способ удаления пустых строк - с помощью функции Power Query. В Excel 2010 и Excel 2013 ее можно загрузить как дополнение.

    Важное замечание! Этот метод работает со следующей оговоркой: Power Query преобразует исходные данные в таблицу Excel и изменяет форматирование, такое как цвет заливки, границы и некоторые форматы чисел. Если для вас важно форматирование исходных данных, то лучше выбрать другой способ удаления пустых строк в Excel.

    1. Выберите диапазон, в котором нужно удалить пустые строки.
    2. Перейти к Данные вкладка> Получить & преобразовать группу и нажмите кнопку Из таблицы/диапазона Это загрузит вашу таблицу в Power Query Editor.
    3. На Главная на вкладке Power Query Editor нажмите кнопку Удалить строки > Удаление пустых строк .
    4. Нажмите кнопку Закрыть & Загрузить В результате результирующая таблица будет загружена на новый рабочий лист, а редактор запросов будет закрыт.

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

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

    В начале этого руководства мы предостерегали вас от удаления пустых строк путем выделения пустых мест. Однако этот метод пригодится, если вы хотите удалить строки на основе пробелы в определенном столбце .

    В качестве примера удалим все строки, в которых ячейка в столбце A пуста:

    1. Выберите ключевой столбец, в нашем случае столбец A.
    2. На Главная вкладка, нажмите Найти и выбрать > Перейти к специальному Или нажмите F5 и нажмите кнопку Специальный... кнопка.
    3. В Перейти к специальному диалоговое окно, выберите Заготовки и нажмите OK Это позволит выбрать пустые ячейки в используемом диапазоне в столбце A.
    4. Щелкните правой кнопкой мыши на любой выделенной ячейке и выберите Удалить... из контекстного меню.
    5. В Удалить диалоговое окно, выберите Весь ряд и нажмите OK.

    Готово! Строки, в которых нет значения в столбце A, больше нет:

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

    Как удалить лишние строки под данными

    Иногда строки, которые выглядят абсолютно пустыми, на самом деле могут содержать некоторые форматы или непечатные символы. Чтобы проверить, действительно ли последняя ячейка с данными является последней используемой ячейкой в рабочем листе, нажмите Ctrl + End . Если это привело вас к визуально пустой строке под вашими данными, с точки зрения Excel, эта строка не является пустой. Чтобы удалить такие строки, сделайте следующее:

    1. Щелкните заголовок первой пустой строки под вашими данными, чтобы выбрать ее.
    2. Нажмите Ctrl + Shift + End. Это позволит выбрать все строки, содержащие что-либо, включая форматы, пробелы и непечатные символы.
    3. Щелкните выделение правой кнопкой мыши и выберите Удалить... > Весь ряд.

    Если у вас относительно небольшой набор данных, вы можете захотеть избавиться от всех пустых строк под данными, например, чтобы облегчить прокрутку. Хотя в Excel нет возможности удалить неиспользуемые строки, ничто не мешает вам сделать это следующим образом скрыть их. Вот как:

    1. Выберите строку под последней строкой с данными, щелкнув ее заголовок.
    2. Нажмите Ctrl + Shift + стрелка вниз, чтобы расширить выделение до последней строки на листе.
    3. Нажмите Ctrl + 9, чтобы скрыть выделенные строки. Или щелкните правой кнопкой мыши на выделении, а затем щелкните Скрыть .

    На скрыть строки , нажмите Ctrl + A, чтобы выделить весь лист, а затем нажмите Ctrl + Shift + 9, чтобы все линии снова стали видимыми.

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

    Самый быстрый способ удаления пустых строк в Excel

    Когда вы читали предыдущие примеры, не было ли у вас ощущения, что мы используем кувалду, чтобы расколоть орех? Мы в Ablebits предпочитаем не делать вещи более сложными, чем они должны быть. Поэтому мы сделали еще один шаг вперед и создали маршрут удаления пустых строк в Excel в два клика.

    Добавив Ultimate Suite в свою ленту, вот как вы можете удалить все пустые строки в рабочем листе:

    1. На Инструменты Ablebits во вкладке Преобразование группу, нажмите Удалить заготовки > Пустые строки :
    2. Надстройка сообщит вам, что все пустые строки будут удалены из активного рабочего листа, и попросит подтвердить. Нажмите OK, и через мгновение все пустые строки будут удалены.

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

    Чтобы узнать больше о потрясающих возможностях, включенных в наш Ultimate Suite for Excel, вы можете загрузить пробную версию.

    Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.