Удаление пустых строк и столбцов в данных
Пустые строки и столбцы могут быть головной болью в таблицах во многих случаях. Стандартные функции сортировки, фильтрации, подведения итогов, создания сводных таблиц и т.д. воспринимают пустые строки и столбцы как разрыв таблицы, не подхватывая данные, расположенные за ними далее. Если таких разрывов много, то удалять их вручную может оказаться весьма затратно, а удалить сразу всех «оптом», используя фильтрацию не получится, т.к. фильтр тоже будет «спотыкаться» на разрывах.
Давайте рассмотрим несколько способов решения этой задачи.
Способ 1. Поиск пустых ячеек
Это, может, и не самый удобный, но точно самый простой способ вполне достойный упоминания.
Предположим, что мы имеем дело вот с такой таблицей, содержащей внутри множество пустых строк и столбцов (для наглядности выделены цветом):
Допустим, мы уверены, что в первом столбце нашей таблицы (колонка B) всегда обязательно присутствует название какого-либо города. Тогда пустые ячейки в этой колонке будут признаком ненужных пустых строк. Чтобы быстро их все удалить делаем следующее:
- Выделяем диапазон с городами (B2:B26)
- Нажимаем клавишу F5 и затем кнопку Выделить (Go to Special) или выбираем на вкладке Главная — Найти и выделить — Выделить группу ячеек (Home — Find&Select — Go to special).
- В открывшемся окне выбираем опцию Пустые ячейки (Blanks) и жмём ОК – должны выделиться все пустые ячейки в первом столбце нашей таблицы.
- Теперь выбираем на вкладке Главная команду Удалить — Удалить строки с листа (Delete — Delete rows) или жмём сочетание клавиш Ctrl+минус — и наша задача решена.
Само-собой, от пустых столбцов можно избавиться совершенно аналогично, взяв за основу шапку таблицы.
Способ 2. Поиск незаполненных строк
Как вы, возможно, уже сообразили, предыдущий способ сработает только в том случае, если в наших данных обязательно присутствую полностью заполненные строки и столбцы, за которые можно зацепиться при поиске пустых ячеек. Но что, если такой уверенности нет, и в данных могут содержаться и пустые ячейки в том числе?
Взгляните, например, на следующую таблицу — как раз такой случай:
Здесь подход будет чуть похитрее:
-
Введём в ячейку A2 функцию СЧЁТЗ (COUNTA), которая вычислит количество заполненных ячеек в строке правее и скопируем эту формулу вниз на всю таблицу:
- Выделим ячейку А2 и включим фильтр командой Данные — Фильтр (Data — Filter) или сочетанием клавиш Ctrl+Shift+L.
- Отфильтруем по вычисленному столбцу нули, т.е. все строки, где нет данных.
- Осталось выделить отфильтрованные строки и удалить их командой Главная — Удалить - Удалить строки с листа (Home — Delete — Delete rows) или сочетанием клавиш Ctrl+минус.
- Отключаем фильтр и получаем наши данные без пустых строк.
К сожалению, со столбцами такой трюк уже не проделать – фильтровать по столбцам Excel пока не научился.
Способ 3. Макрос удаления всех пустых строк и столбцов на листе
Для автоматизации подобной задачи можно использовать и простой макрос. Нажмите сочетание клавиш Alt+F11 или выберите на вкладке Разработчик — Visual Basic (Developer — Visual Basic Editor). Если вкладки Разработчик не видно, то можно включить ее через Файл — Параметры — Настройка ленты (File — Options — Customize Ribbon).
В открывшемся окне редактора Visual Basic выберите команду меню Insert — Module и в появившийся пустой модуль скопируйте и вставьте следующие строки:
Sub DeleteEmpty() Dim r As Long, rng As Range 'удаляем пустые строки For r = 1 To ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count If Application.CountA(Rows(r)) = 0 Then If rng Is Nothing Then Set rng = Rows(r) Else Set rng = Union(rng, Rows(r)) End If Next r If Not rng Is Nothing Then rng.Delete 'удаляем пустые столбцы Set rng = Nothing For r = 1 To ActiveSheet.UsedRange.Column - 1 + ActiveSheet.UsedRange.Columns.Count If Application.CountA(Columns(r)) = 0 Then If rng Is Nothing Then Set rng = Columns(r) Else Set rng = Union(rng, Columns(r)) End If Next r If Not rng Is Nothing Then rng.Delete End Sub
Закройте редактор и вернитесь в Excel.
Теперь нажмите сочетание Alt+F8 или кнопку Макросы на вкладке Разработчик. В открывшемся окне будут перечислены все доступные вам в данный момент для запуска макросы, в том числе только что созданный макрос DeleteEmpty. Выберите его и нажмите кнопку Выполнить (Run) — все пустые строки и столбцы на листе будут мгновенно удалены.
Способ 4. Запрос Power Query
Ещё один способ решить нашу задачу и весьма частый сценарий — это удаление пустых строк и столбцов в Power Query.
Сначала давайте загрузим нашу таблицу в редактор запросов Power Query. Можно конвертировать её в динамическую «умную» сочетанием клавиш Ctrl+T или же просто выделить наш диапазон данных и дать ему имя (например Данные) в строке формул, преобразовав в именованный:
Теперь используем команду Данные — Получить данные — Из таблицы/диапазона (Data — Get Data — From table/range) и грузим всё в Power Query:
Дальше всё просто:
- Удаляем пустые строки командой Главная — Сократить строки — Удалить строки — Удалить пустые строки (Home — Remove Rows — Remove empty rows).
- Щёлкаем правой кнопкой мыши по заголовку первого столбца Город и выбираем в контекстном меню команду Отменить свёртывание других столбцов (Unpivot Other Columns). Наша таблица будет, как это технически правильно называется, нормализована — преобразована в три столбца: город, месяц и значение с пересечения города и месяца из исходной таблицы. Особенность этой операции в Power Query в том, что она пропускает в исходных данных пустые ячейки, что нам и требуется:
- Теперь выполяем обратную операцию — сворачиваем полученную таблицу обратно в двумерную, чтобы вернуть ей исходный вид. Выделяем столбец с месяцами и на вкладке Преобразование выбираем команду Столбец сведения (Transform — Pivot Column). В открывшемся окне в качестве столбца значений выбираем последний (Значение), а в расширенных параметрах — операцию Не агрегировать (Don’t aggregate):
- Останется выгрузить результат обратно в Excel командой Главная — Закрыть и загрузить — Закрыть и загрузить в… (Home — Close&Load — Close&Load to…)
Ссылки по теме
- Что такое макрос, как он работает, куда копировать текст макроса, как запустить макрос?
- Заполнение всех пустых ячеек в списке значениями вышестоящих ячеек
- Удаление всех пустых ячеек из заданного диапазона
- Удаление всех пустых строк на листе с помощью надстройки PLEX
Удаление пустых строк с помощью кода VBA из всего задействованного диапазона рабочего листа Excel и из отдельного заданного диапазона.
Главный секрет удаления пустых строк кодом VBA Excel – это построчный просмотр диапазона или отдельного столбца снизу вверх, что исключает возможность при удалении найденных пустых строк получить бесконечный цикл и зависание программы.
Удаление пустых строк в используемом диапазоне
Рассмотрим удаление пустых строк из всего используемого диапазона на рабочем листе. Это может быть как таблица, так и любые наборы данных и произвольные записи, внутри которых присутствуют пустые строки, от которых надо избавиться.
Определить границы используемого диапазона на рабочем листе из кода VBA Excel нам поможет последняя ячейка используемого диапазона: Cells.SpecialCells(xlLastCell)
.
Самый простой код удаления пустых строк
Сначала определяем номер строки последней ячейки задействованного на рабочем листе диапазона. Затем, с этой строки начинаем построчный просмотр используемого диапазона снизу вверх с поиском и удалением пустых строк.
Пример кода VBA Excel для активного листа:
Sub Primer1() Dim n As Long, i As Long ‘Определяем номер строки последней ячейки ‘используемого диапазона на рабочем листе n = Cells.SpecialCells(xlLastCell).Row ‘Ищем и удаляем пустые строки For i = n To 1 Step —1 If Rows(i).Text = «» Then Rows(i).Delete Next End Sub |
То же самое, но с указанием книги и рабочего листа:
Sub Primer2() Dim n As Long, i As Long With ThisWorkbook.Worksheets(«Лист1») n = .Cells.SpecialCells(xlLastCell).Row For i = n To 1 Step —1 If .Rows(i).Text = «» Then .Rows(i).Delete Next End With End Sub |
Программа определения времени выполнения макроса показала, что этот код отработал в диапазоне из 3000 строк за 17,5 секунд.
Улучшенный код удаления пустых строк
Предыдущий код VBA Excel анализирует на наличие текста каждую строку по всей длине в пределах рабочего листа. Эта процедура проверяет каждую строку по длине только в переделах используемого диапазона:
Sub Primer3() Dim n As Long, i As Long, myRange As Range ‘Присваиваем объектной переменной ссылку на диапазон от первой ячейки ‘рабочего листа до последней ячейки используемого диапазона Set myRange = Range(Range(«A1»), Cells.SpecialCells(xlLastCell)) With myRange n = .Rows.Count For i = n To 1 Step —1 If .Rows(i).Text = «» Then .Rows(i).Delete Next End With End Sub |
Программа определения времени выполнения макроса показала, что этот код отработал в диапазоне из 3000 строк за 13,3 секунды.
Удаление строк по пустым ячейкам
Иногда может появиться необходимость удалить не только полностью пустые строки, но и строки с пустыми ячейками в определенном столбце. Тогда следует действовать так:
Sub Primer4() Dim n As Long, i As Long n = Cells.SpecialCells(xlLastCell).Row For i = n To 1 Step —1 If Cells(i, 1).Text = «» Then Rows(i).Delete Next End Sub |
или так:
Sub Primer5() Dim n As Long, i As Long, myRange As Range Set myRange = Range(Range(«A1»), Cells.SpecialCells(xlLastCell)) With myRange n = .Rows.Count For i = n To 1 Step —1 If .Cells(i, 1).Text = «» Then .Rows(i).Delete Next End With End Sub |
В этих примерах поиск пустой ячейки производится в первом столбце: Cells(i, 1)
.
Удаление пустых строк в заданном диапазоне
Процедуры VBA Excel для удаления пустых строк из заданного диапазона рассмотрим на примере объекта Selection
, который можно заменить на любой диапазон, указанный явно.
Удаление полностью пустых строк в пределах заданного диапазона:
Sub Primer6() Dim n As Long, i As Long With Selection n = .Rows.Count For i = n To 1 Step —1 If .Rows(i).Text = «» Then .Rows(i).Delete Next End With End Sub |
Удаление строк по пустым ячейкам в одном из столбцов:
Sub Primer7() Dim n As Long, i As Long With Selection n = .Rows.Count For i = n To 1 Step —1 If .Cells(i, 1).Text = «» Then .Rows(i).Delete Next End With End Sub |
Исходные коды макросов для выделения, удаления, скрытия и добавления пустых строк в таблицу Excel по условию пользователя.
Как выделить все пустые строки макросом
Есть таблица годового бюджета, разделенная на отдельные группы статей расходов и кварталы. Каждая группа статей расходов разделена между собой пустыми строками:
Нам необходимо удалить все пустые строки в таблице. Для этого сначала необходимо их выделить. Если выделять вручную, то потребуется много времени и сил. Кроме того, нужно еще быть уверенным что строка действительно является пустой, чтобы вместе с ней не удалить важную информацию из бюджета или формулу. Для автоматического решения данной задачи лучше написать свой макрос, который сам проверит и выделит все пустые строки в таблице годового бюджета.
Откройте редактор Visual Basic (ALT+F11):
И воздайте в нем новый модуль для текущей книги «Insert»-«Module», а потом запишите в него следующий VBA-код макроса:
Sub SelectLine()
Dim i As Long
Dim diapaz1 As Range
Dim diapaz2 As Range
Set diapaz1 = Application.Range(ActiveSheet.Range("A1"), _
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))
For i = 1 To diapaz1.Rows.Count
If WorksheetFunction.CountA(diapaz1.Rows(i).EntireRow) = 0 Then
If diapaz2 Is Nothing Then
Set diapaz2 = diapaz1.Rows(i).EntireRow
Else
Set diapaz2 = Application.Union(diapaz2, diapaz1.Rows(i).EntireRow)
End If
End If
Next
If diapaz2 Is Nothing Then
MsgBox "Ненайдено ниодной пустой строки!"
Else
diapaz2.Select
End If
End Sub
Теперь если нам нужно автоматически выделить все пустые строки в таблице бюджета перед тем как их удалить, выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«SelectLine»-«Выполнить». В результате выделяться все пустые ячейки только для пустых строк внутри исходной таблицы.
Пример работы первого VBA-кода:
Пустые строки, которые находиться под последними заполненными ячейками не будут выделены. Теперь для удаления выделенных строк пользователю осталось только выбрать инструмент: «ГЛАВНАЯ»-«Ячейки»-«Удалить»-«Удалить строки с листа». Или нажать комбинацию горячих клавиш CTRL+=. А после в появившемся окне «Удаление ячеек» выбрать опцию «строку» и нажать ОК.
Вначале кода присваиваем для переменной diapaz1 диапазон ячеек в границах между A1 и последней используемой ячейкой на рабочем листе Excel.
Примечание. Последняя используемая ячейка на листе — это любая ячейка для, которой были выполнены любые изменения: ввод значений, изменение формата границ или цвета фона и т.п.
Далее в цикле проверяются все строки в этом диапазоне, каждая по отдельности, на количество непустых ячеек. В том случаи если метод CountA возвращает значение 0, то адреса этих ячеек дополняют несмежный диапазон в переменной diapaz2 еще на одну пустую строку.
В конце макроса выделяются все пустые строки, находящиеся внутри диапазона определенным переменной diapaz2. Если же таблица не сдержит ни одной пустой строки, тогда выводиться соответственное сообщение.
Макрос для удаления пустых строк
Как удалить строку макросом? Если нужно сделать так чтобы макрос автоматически не только выделял, но и сам удалял пустые целые и смежные диапазоны ячеек без использования других инструментов, тогда в конце кода для переменной diapaz2.Select следует изменить метод на [Delete]:
diapaz2.[Delete]
Удалить:
Sub DelLine()
Dim i As Long
Dim diapaz1 As Range
Dim diapaz2 As Range
Set diapaz1 = Application.Range(ActiveSheet.Range("A1"), _
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))
For i = 1 To diapaz1.Rows.Count
If WorksheetFunction.CountA(diapaz1.Rows(i).EntireRow) = 0 Then
If diapaz2 Is Nothing Then
Set diapaz2 = diapaz1.Rows(i).EntireRow
Else
Set diapaz2 = Application.Union(diapaz2, diapaz1.Rows(i).EntireRow)
End If
End If
Next
If diapaz2 Is Nothing Then
MsgBox "Ненайдено ниодной пустой строки!"
Else
diapaz2.[Delete]
End If
End Sub
Пример второго VBA-кода:
Макрос для скрытия пустых строк
Как скрыть пустые строки макросом? Но если вам нужно не удалить, а только скрыть (например, при подготовке документа на печать), тогда эту строку кода следует модифицировать несколько иначе:
diapaz2.EntireRow.Hidden = True
Скрыть:
Sub HidLine()
Dim i As Long
Dim diapaz1 As Range
Dim diapaz2 As Range
Set diapaz1 = Application.Range(ActiveSheet.Range("A1"), _
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))
For i = 1 To diapaz1.Rows.Count
If WorksheetFunction.CountA(diapaz1.Rows(i).EntireRow) = 0 Then
If diapaz2 Is Nothing Then
Set diapaz2 = diapaz1.Rows(i).EntireRow
Else
Set diapaz2 = Application.Union(diapaz2, diapaz1.Rows(i).EntireRow)
End If
End If
Next
If diapaz2 Is Nothing Then
MsgBox "Ненайдено ниодной пустой строки!"
Else
diapaz2.EntireRow.Hidden = True
End If
End Sub
Пример третьего VBA-кода:
Добавление строк макросом
Как вставить строки макросом? Если мы изменим код в этом же месте как показано ниже, то получиться инструмент для добавления и вставки строк после пустых:
diapaz2.[Insert]
Добавить:
Sub AddLine()
Dim i As Long
Dim diapaz1 As Range
Dim diapaz2 As Range
Set diapaz1 = Application.Range(ActiveSheet.Range("A1"), _
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))
For i = 1 To diapaz1.Rows.Count
If WorksheetFunction.CountA(diapaz1.Rows(i).EntireRow) = 0 Then
If diapaz2 Is Nothing Then
Set diapaz2 = diapaz1.Rows(i).EntireRow
Else
Set diapaz2 = Application.Union(diapaz2, diapaz1.Rows(i).EntireRow)
End If
End If
Next
If diapaz2 Is Nothing Then
MsgBox "Ненайдено ниодной пустой строки!"
Else
diapaz2.[Insert]
End If
End Sub
Пример четвертого VBA-кода:
Если же вы хотите, чтобы макрос работал исключительно только для пустых строк предварительно выделенного определенного диапазона листа перед запуском макроса, то в начале макроса следует изменить строку создания экземпляра объекта для переменной diapaz1, на:
Set diapaz1 = Selection
Читайте также: Как выделить столбцы в Excel макросом.
Внимание! Следует помнить о том, что если таким образом создавать экземпляр объекта для переменной diapaz1, то тогда нельзя перед запуском макроса выделять все ячейки листа или все ячейки любого столбца. Иначе это затормозит программу Excel, так как один лист содержит аж 1 048 576 строк и тогда они все будут обрабатываться макросом, а пользователь будет ждать.
Skip to content
Как удалить пустые строки
На чтение 3 мин. Просмотров 4.2k.
Что делает макрос: Работа с Excel достаточно долгая, и вы увидите, что пустые строки часто могут вызвать хаос на многих уровнях. Они могут вызывать проблемы с формулами, ввести риск при копировании и вставке, а иногда вызывают странное поведение в сводных таблицах. Если вы вручную пытались выискать и удалить пустые строки в ваших данных, этот макрос может помочь автоматизировать эту задачу.
Содержание
- Как макрос работает
- Код макроса
- Как этот код работает
- Как использовать
Как макрос работает
В этом макросе, мы используем свойство UsedRange объекта ActiveSheet, чтобы определить диапазон c которым мы работаем. Свойство UsedRange дает диапазон, который охватывает ячейки, которые были использованы для ввода данных. Затем устанавливается счетчик, который начинается в последней строке используемого диапазона, чтобы проверить, вся ли строка пуста. Если вся строка действительно пуста, мы убираем строку. Мы продолжаем делать то же самое для каждого цикла, каждый раз увеличивая счетчик на предыдущей строке.
Код макроса
Sub UdalitPustieStroki() 'Шаг 1: Объявляем переменные Dim MyRange As Range Dim iCounter As Long 'Шаг 2: Указываем диапазон Set MyRange = ActiveSheet.UsedRange 'Шаг 3: Начинаем обратный цикл For iCounter = MyRange.Rows.Count To 1 Step -1 'Шаг 4: Если строка пустая, удаляем ее If Application.CountA(Rows(iCounter).EntireRow) = 0 Then Rows(iCounter).Delete End If 'Шаг 5: Увеличиваем счетчик Next iCounter End Sub
Как этот код работает
- Макрос первым объявляет две переменные. Первая переменная является переменной объекта называется MyRange. Это переменная объект, который определяет наш целевой диапазон. Другая переменная является переменной Long Integer называется iCounter. Эта переменная служит инкрементного счетчика.
- На шаге 2 макрос заполняет переменную MyRange со свойством UsedRange объекта ActiveSheet. Свойство UsedRange дает диапазон, который охватывает клетки, которые были использованы для ввода данных. Обратите внимание, что, если мы хотим указать фактический диапазон или именованный диапазон, мы могли бы просто ввести свое название — Range
(«MyNamedRange»). - На этом этапе макрос устанавливает параметры для инкрементного счетчика, чтобы начать на максимальном количестве для диапазона (MyRange.Rows.Count) и заканчивается в 1 (первая строка выбранного диапазона). Обратите внимание, что мы используем Шаг-1 классификатор. Поскольку мы указываем шаг -1, Excel знает, что мы будем увеличивать счетчик в обратном направлении, двигаясь назад один шаг на каждой итерации. В целом, Шаг 3 говорит Excel, чтобы начать в последней строке выбранного диапазона, двигаясь назад, пока он не дойдет до первой строки диапазона. При работе с диапазоном, вы можете явно вызвать какую-либо конкретную строку в диапазоне, передавая номер индекса строки к коллекции Rows диапазона. Например, диапазон
(«D6: D17»). Ряды (5) указывает на пятой строки диапазона D6: D17. - На шаге 4, макрос использует переменную iCounter как номер индекса для коллекции Строки MyRange. Это помогает точно определить какой именно ряд мы обрабатываем в текущем цикле. Макрос проверяет, являются ли ячейки в этой строке пустыми. Если они пусты, макрос удаляет всю строку.
- На шаге 5, макрос возвращается к началу цикла, увеличивая счетчик.
Как использовать
- Активируйте редактор Visual Basic, нажав ALT + F11.
- Щелкните правой кнопкой мыши personal.xlb в окне Project.
- Выберите Insert➜Module.
- Введите или вставьте код.
Skip to content
Это руководство научит вас нескольким простым приемам безопасного удаления нескольких пустых строк в Excel без потери информации.
Пустые строки в таблице — это проблема, с которой мы все время от времени сталкиваемся, особенно при объединении данных из разных источников или импорте информации из каких-то отчетов. Они могут мешать вашим расчетам, портить внешний вид таблицы, а их удаление вручную может быть длительным и подверженным ошибкам процессом.
В этой статье вы узнаете несколько простых и надежных методов удаления “белых пятен” на листах Excel.
- Как НЕ НАДО удалять пустые строки в Excel
- Как удалить пустые строки при помощи формул
- Использование Power Query
- Удаляем строки с определенными пустыми ячейками
- Как убрать или скрыть лишние строки под данными
- Как быстро удалить пустые строки при помощи VBA
- Макрос 1. Удаление в выбранном диапазоне
- Макрос 2. Удаляем все пустые строки
- Макрос 3. Критерий удаления — пустая ячейка
- Самый быстрый способ удалить пустые строки в Excel
Как НЕ НАДО удалять пустые строки в Excel
Есть несколько различных способов удаления пустых строк в Microsoft Excel. Но на удивление многие онлайн-ресурсы придерживаются в своих рекомендациях наиболее опасных из них.
Пожалуй, самый популярный совет – использовать инструмент «Найти и выделить» > «Перейти к специальному» > «Пробелы» .
Что плохого в этой технике? Она выбирает все пустоты в диапазоне данных. Но ведь в строке может быть, к примеру, только одна пустая ячейка, а в остальных будет записаны какие-то данные. И, следовательно, вы в итоге удалите множество строчек, которые содержат хотя бы одну пустую ячейку. Некоторые нужные данные, естественно, будут утеряны.
Специально не буду подробно описывать последовательность действий в этом методе, чтобы вы случайно его не повторили.
И ключевым в данном случае является вопрос: «Вы уверены, что все ячейки в вашей строке пустые? У вас точно нет таких, в которых по какой-то причине не заполнены одна или несколько ячеек, а остальные содержат данные?»
Просто запомните: «Не следует использовать метод поиска пустых ячеек, чтобы выделить и удалить пустые строки».
В качестве иллюстрации на изображении ниже слева показана исходная таблица, а справа — итоговая таблица. И в результирующей таблице все неполные строки пропали, даже 4,6 и 10, которые были частично заполнены:
Встречаются также предложения удалять незаполненные строки при помощи сортировки таблицы или установления фильтра.
Но здесь мы сталкиваемся с той же опасностью. Если вы упорядочите данные по какому-то столбцу, к примеру, от меньшего к большему, то строчки с пустыми ячейками в этом столбце окажутся в самом низу. Но где гарантия того, что в других столбцах правее или левее также отсутствует информация? А если таблица достаточно большая, то и проверить это не так просто.
В итоге вы опять же рискуете удалить данные, в которых случайно оказался пропуск именно в этом столбце.
С фильтрацией примерно та же история. Вы можете установить фильтр по пустым ячейкам в каком-то конкретном столбце. Далее все может произойти так же, как в истории с сортировкой. Какие-то из ячеек могут оказаться заполнены нужной информацией. Чтобы обезопасить себя от случайной её потери, такой фильтр по пустым ячейкам нужно установить в каждом столбце. Хорошо, если их в вашей таблице штук 5. А если 20? А 30? Вряд ли у вас есть желание устанавливать, а затем снимать даже 10 фильтров.
Поэтому эти методы – это также не наш выбор.
Итог: если вы не хотите испортить или потерять данные, никогда не удаляйте пустые строки, выбирая каким-то способом отдельные пустые ячейки в вашей таблице. Вместо этого используйте один из наиболее продуманных подходов, обсуждаемых ниже.
Формула для удаления пустых строк в Excel
Формулу мы будем использовать в дополнительном столбце, который лучше всего расположить справа от вашей таблицы. Поясним на примере.
У нас имеется таблица с заказами от различных покупателей. В ней имеются пропуски. Часть ячеек не заполнена. Давайте избавимся от пустых строк, но при этом сохраним все прочие данные.
Если вы хотите точно знать, что удаляете, то используйте следующую формулу:
=ЕСЛИ(СЧЁТЗ(A2:E2)=0;»Пусто»;»»)
Где A2 — первая, а E2 — последняя использованная ячейка первой строки данных.
Введите эту формулу в F2 или любой другой свободный столбец в строке 2 и перетащите маркер заполнения, чтобы скопировать формулу вниз.
В результате у вас будет записано «Пусто» в незаполненных строках и ничего, если есть хотя бы одна ячейка с данными:
Логика формулы очевидна: вы подсчитываете заполненные ячейки с помощью функции СЧЁТЗ и используете оператор ЕСЛИ для возврата «Пусто» для нулевого результата. Если же найдена хоть какая-то информация в нужном диапазоне, то не возвращаем ничего.
Фактически, вы можете обойтись без ЕСЛИ:
=СЧЁТЗ(A2:Е2)=0
В этом случае формула вернет ИСТИНА для пустых и ЛОЖЬ для заполненных строк.
Встречаются также аналогичные решения с использованием функции СЧИТАТЬПУСТОТЫ. В ней указываем диапазон ячеек и затем сравниваем с количеством столбцов.
=ЕСЛИ(СЧИТАТЬПУСТОТЫ(A2:E2)=ЧИСЛСТОЛБ(A2:E2);»Пусто»;»»)
Если достигнуто равенство, значит, число незаполненных клеток равно числу столбцов и данных в строке нет. Поэтому её можно пометить на удаление.
Как мы это удаление сделаем?
Разберем пошагово действия, как быстро удалить пустые строки:
- Выберите любую ячейку в заголовке и нажмите «Фильтр» на вкладке «Данные». Это добавит стрелки раскрывающегося списка фильтрации ко всем ячейкам заголовка.
- Щелкните стрелку в заголовке столбца формулы, снимите флажок (Выбрать все), выберите «Пусто» и нажмите ОК:
- Выделите всё отфильтрованное. Для этого щелкните самую верхнюю ячейку и нажмите Ctrl + Shift + End, чтобы расширить выделение до последней ячейки отфильтрованной области.
Или же щелкните по номеру первой незаполненной строки на вертикальной шкале координат. При этом вся она должна подсветиться. Затем наберите на клавиатуре комбинацию Ctrl
+ Shift
+
(стрелка вниз). При этом будет выделена вся область до конца таблицы. Поле этого кликните по выделению правой кнопкой мыши и выберите из контекстного меню пункт «Удалить». Все выделенные строки будут удалены.
Можно не вызывать контекстное меню, а просто набрать на клавиатуре сочетание клавиш Ctrl
и -
.
- Снимите фильтр, нажав
Ctrl
+Shift
+L
. Или же поставьте курсор в самую верхнюю позицию и вновь нажмите на иконку фильтра в меню «Данные». - Удалите столбец с формулой проверки, поскольку он вам больше не нужен.
В результате мы имеем чистую таблицу без пробелов, но с сохранением всей информации. Частично заполненные строки остались в таблице, мы их не потеряли.
Совет. Вместо удаления, вы можете скопировать непустые строки в другое место. Для этого отфильтруйте всё, кроме «Пусто», выделите и нажмите Ctrl
+ C
. Затем переключитесь на другой лист, выберите верхнюю левую ячейку целевого диапазона и нажмите Ctrl
+ V
.
Как удалить пустые строки в Excel с помощью Power Query
В Excel 2016 и Excel 2019 есть еще один способ удалить незаполненные строки — с помощью инструмента Power Query. В Excel 2010 и 2013 его можно загрузить как надстройку.
Важное примечание! Этот метод работает со следующим предостережением: Power Query преобразует ваши данные в таблицу Excel и изменяет форматирование, такое как цвет заливки, границы и некоторые числовые форматы. Если для вас важно форматирование исходных данных, то лучше выбрать другой способ удаления.
Итак, давайте по порядку.
- Выберите диапазон, в котором вы хотите заняться удалением.
- Перейдите на вкладку «Данные» и нажмите Получить данные — Из других источников — Из таблицы/диапазона . Это загрузит вашу таблицу в редактор Power Query.
- На вкладке Главная в редакторе Power Query щелкните Удалить строки > Удалить пустые …. (как на рисунке).
- Нажмите кнопку «Закрыть и загрузить». Полученная таблица загрузится на новый лист и закроется редактор запросов.
В результате этих манипуляций я получил следующую таблицу без прежних белых полос посреди данных, но с парой неприятных изменений — формат чисел утерян и даты отображаются в формате по умолчанию вместо пользовательского.
Как удалить строки, если ячейка в определенном столбце пуста
В начале этого урока мы предостерегали вас от удаления пустых строк путем выбора пробелов. Однако этот метод пригодится, если вы хотите удалить строки на основе пробелов в определенном столбце.
В качестве примера удалим все строки, в которых ячейка в столбце A не содержит никакой информации:
- Выберите ключевой столбец, в нашем случае столбец A.
- На вкладке «Главная» нажмите Найти и выделить > Перейти… > Выделить. Или просто нажмите
F5
и затем — Выделить… .
- В диалоговом окне выберите «Пробелы» и затем — «ОК». Это выделит все пустоты в столбце A.
- Щелкните правой кнопкой мыши любую выделенную ячейку и выберите «Удалить…» из контекстного меню.
- В диалоговом окне «Удалить» кликните «Строку» и нажмите «ОК».
Готово! Строки, которые не имеют данных в столбце A, больше не существуют.
Такого же результата можно добиться, отфильтровав пробелы в ключевом столбце.
Как удалить лишние строки под данными или скрыть их.
Иногда строки, которые выглядят совершенно пустыми, на самом деле могут содержать пробелы, перевод строки или непечатаемые символы. Чтобы проверить, действительно ли последняя ячейка с данными является последней использованной ячейкой на листе, нажмите Ctrl + End. Если это привело вас к визуально свободной от данных строке под вашими данными, то с точки зрения Excel, в ней на самом деле что-то записано. Чтобы удалить эти лишние строки под таблицей, сделайте следующее:
- Щелкните заголовок первой свободной строки под данными, чтобы выбрать ее целиком.
- Нажмите
Ctrl
+Shift
+End
. Это выберет все строчки ниже, которые содержат что-либо, включая пробелы и непечатаемые символы. - Щелкните выделение правой кнопкой мыши, как это мы уже делали ранее, и выберите «Удалить…».
Однако, удаление — это достаточно радикальный шаг. Поэтому, думаю, стоит поискать более «мягкие» варианты. К примеру, нет ничего, что могло бы помешать вам незаполненные строки либо столбцы просто скрыть. Вот простая инструкция:
- Выберите строку под последней строкой с данными, щелкнув ее заголовок.
- Нажмите
Ctrl
+Shift
+, чтобы расширить выделение до конца вниз.
- Нажмите
Ctrl
+9
чтобы скрыть выбранные строки. Или щелкните выделение правой кнопкой мыши и выберите «Скрыть».
Чтобы вновь показать ранее скрытое, нажмите Ctrl
+ A
, чтобы выделить весь лист, а затем нажмите Ctrl
+ Shift
+ 9
, чтобы снова сделать все видимым.
Аналогичным образом вы можете скрыть неиспользуемые столбцы справа от ваших данных.
Как быстро удалить пустые строки в Excel с помощью VBA
Excel VBA может исправить множество вещей, включая и несколько пустых строк. Лучшее в предлагаемом подходе — то, что он не требует никаких навыков программирования. Просто возьмите один из приведенных ниже кодов и запустите его в своем Excel.
Макрос 1. Удалить пустые строки в выбранном диапазоне.
Этот код VBA автоматически удаляет все пустые строки в выбранном диапазоне, не показывая пользователю никаких сообщений или диалоговых окон.
Макрос удаляет строку, только если вся она пуста . Он определяет количество ячеек с данными в каждой строке, а затем удаляет строки с нулевым результатом.
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( _
"Выберите диапазон:", "Удалить пустые строки", _
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
If Application.WorksheetFunction.CountA(EntireRow) = 0 Then
EntireRow.Delete
End If
Next
Application.ScreenUpdating = True
End If
End Sub
После запуска макрос показывает вам поле ввода, вы указываете целевой диапазон и нажимаете OK:
Через мгновение все лишние строки в выбранном диапазоне будут удалены, а оставшиеся сдвинутся вверх.
Макрос 2. Удалить все пустые строки в Excel
Чтобы массово удалить все пустые строки на активном листе, макрос находит последнюю строку используемого диапазона (т.е. содержащую последнюю ячейку с данными), а затем переходит вверх, удаляя строчки, в которых нет никакой информации:
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. Удалить строку, если ячейка пуста.
С помощью этого макроса вы можете удалить всю строку, если ячейка в указанном столбце не содержит данных.
Этот код проверяет столбец A на наличие пробелов. Чтобы удалить строки на основе другого столбца, замените «A» другой соответствующей буквой.
Sub DeleteRowIfCellBlank()
On Error Resume Next
Columns("A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
Важно! Макрос удаляет неиспользуемые строки со всего листа , поэтому будьте очень осторожны при его использовании. В качестве меры предосторожности может быть целесообразно создать резервную копию рабочего листа перед запуском этого макроса.
Чтобы удалить незаполненные строки в Excel с помощью макроса, вам нужно вставить код VBA в свою книгу.
Как добавить макрос в свою книгу?
Чтобы вставить макрос в книгу, выполните следующие действия:
- Откройте лист, на котором вы хотите произвести удаление.
- Нажмите
Alt
+F11
, чтобы открыть редактор Visual Basic. - На левой панели щелкните правой кнопкой мыши и выберите Insert > Module. Те же пункты можно выбрать вверху через главное меню.
- Вставьте код в появившееся окно кода.
- Нажмите F5 для запуска макроса (но вы можете сделать это и позже прямо из вашей книги).
- Нажмите кнопку «Сохранить». При этом вам будет предложено изменить формат вашей книги. Впрочем, запустить макрос на выполнение можно и без сохранения. Просто закройте окно Visual Basic и вернитесь к вашей таблице. Переходите сразу к пункту 3 ниже.
Чтобы выполнить макрос в рабочей книге Excel, сделайте следующее:
- Откройте свою собственную книгу и включите макросы, если будет предложено.
- Перейдите к нужной таблице.
- На листе нажмите
Alt
+F8
, выберите макрос и нажмите «Выполнить».
Вы можете запустить один из следующих макросов:
DeleteBlankRows — удаляет строки без данных в текущем выбранном диапазоне.
RemoveBlankLines — удаляет чистые строки и перемещается вверх в диапазоне, выбранном вами после запуска макроса.
DeleteAllEmptyRows — удаляет все незаполненные строки на активном листе.
DeleteRowIfCellBlank — удаляет строку, если ячейка в определенном столбце пуста.
Имейте в виду, что отменить удаление при помощи меню или же комбинации клавиш Ctrl+Z
в данном случае будет невозможно. Поэтому рекомендую перед использованием макросов позаботиться о сохранении резервной копии ваших данных.
Самый быстрый способ удалить пустые строки в Excel
Читая предыдущие примеры, разве не казалось, что мы используем кувалду, чтобы расколоть орех? Существует способ буквально в два клика мышки удалить пустые строки в Excel.
При помощи надстройки Ultimate Suite вы можете удалить все пустые строки на листе:
- На вкладке Ablebits Tools в группе Преобразование (Transform) нажмите Удалить пробелы (Delete Blanks) > Пустые строки (Empty Rows) :
- Надстройка сообщит вам, что все пустые строки будут удалены из активного листа, и попросит подтвердить. Нажмите ОК, и через мгновение все строки без данных будут удалены.
Как показано на скриншоте ниже, мы удалили только абсолютно пустые строки , в которых нет ни одной ячейки с данными:
Сравните это с первым рисунком, и вы без труда заметите те 3 строки, которые были удалены одним нажатием мышки. Согласитесь: это самый простой и быстрый способ удаления пустых строк среди всех прочих, рассмотренных в этой статье. Подробнее об инструменте удаления пустот в таблице вы можете прочитать здесь.
Чтобы узнать о других полезных функциях, включенных в надстройку Ultimate Suite, вы можете загрузить пробную версию.
Благодарю вас за чтение.
При составлении таблиц в Microsoft Excel и работе с формулами часто образуются пустые строки, которые проблематично убрать. В данной статье будут описаны самые распространенные методы их удаления.
Содержание
- Как НЕ НАДО удалять пустые строки в Excel
- Формула для удаления пустых строк в Excel
- Как удалить пустые строки в Excel с помощью Power Query
- Как удалить строки, если ячейка в определенном столбце пуста
- Как удалить лишние строки под данными или скрыть их
- Как быстро удалить пустые строки в Excel с помощью VBA
- Макрос 1. Удалить пустые строки в выбранном диапазоне
- Макрос 2. Удалить все пустые строки в Excel
- Макрос 3. Удалить строку, если ячейка пуста
- Как добавить макрос в свою книгу
- Как удалить пустые строки в Excel с помощью сортировки
- Как удалить пустые строки в Excel с помощью фильтрации
- Как убрать пустые строки в Excel с помощью выделения группы ячеек
- Как удалить пустые строки в Экселе с помощью вспомогательного столбца
- Заключение
Как НЕ НАДО удалять пустые строки в Excel
Удаление пустых строк не рекомендуется выполнять через раздел «Найти и выделить». Данная команда удаляет сразу всю строку, в которой есть пустоты. В таком случае ячейки с нужной информацией также пропадут. Инструмент «Найти и выделить» актуален, когда пустой получилась целая строчка в таблице, и ее необходимо удалить. В такой ситуации необходимо проделать следующие шаги:
- Выделить пустую строчку с помощью мыши.
- Перейти в раздел «Найти и выделить».
- Кликнуть по пункту «Перейти к специальному».
- Нажать ЛКМ по слову «Пробел». После этого пустота должна исчезнуть, и таблица преобразится.
В Эксель пустые строки могут удаляться посредством сортировки таблицы либо установления фильтра. Однако такой способ также может привести к полному удалению строки с заполненными ячейками. Причем пострадать могут и соседние строчки или столбцы.
Обратите внимание! В Excel нельзя удалять пустые строки, выбирая отдельные ячейки в таблице во избежание потери важной информации. Лучше воспользоваться другими методами, которые будут описаны далее.
Формула для удаления пустых строк в Excel
Для выполнения поставленной задачи можно воспользоваться специальной формулой, которая работает во всех версиях программы: =ЕСЛИ(СЧЕТЗ(A2:E2)=0;»Пусто»;»»). А2 и Е2 — это первая и последняя ячейки строки, в которой необходимо убрать пустоты. Аналогичным образом выражение применяется для любого столбца таблицы. Пользователю необходимо поставить курсор мыши в свободную ячейку и прописать данную формулу в строке сверху главного меню. Далее эту формулу потребуется растянуть для всех строк или столбцов таблицы, зажав ЛКМ крестик в правом нижнем углу первой ячейки. После таких манипуляций пустые строчки пропадут.
Как удалить пустые строки в Excel с помощью Power Query
Power Query — это специальный инструмент, который присутствует в версиях Excel, начиная с 2013 года.
Важно! Такой инструмент изменяет форматирование таблицы, заливку ячеек, их размер, ориентацию.
Чтобы удалить пустые ячейки в таблицы, необходимо выполнить несколько простых шагов по алгоритму:
- Выделить манипулятором строчку или столбик, в котором есть пустоты, требующие деинсталляции.
- В интерфейсе Excel сверху перейти в раздел «Данные».
- В графе открывшихся параметров кликнуть по кнопке «Получить данные».
- В меню контекстного типа нажать по строке «Из других источников» и далее выбрать вариант «Из таблицы/диапазона». Теперь откроется небольшое меню, где надо поставить галочку рядом с параметром «Таблица с заголовком» и щелкнуть по «ОК».
- Изучить интерфейс открывшегося редактора Power Query.
- Кликнуть ЛКМ по кнопке «Удалить строки» в верхней части раздела.
- В контекстном меню нажать по «Удалить пустые строки».
- Щелкнуть по кнопке «Закрыть и загрузить».
- Проверить результат. После проделывания вышеизложенных манипуляций окно редактора должно закрыться, и в таблице пропадут пустые ячейки.
Дополнительная информация! После реализации рассмотренного способа формат отображения дат и чисел в таблице изменится.
Как удалить строки, если ячейка в определенном столбце пуста
После построения в некоторых столбцах таблицы могут появиться единичные пустые ячейки. От них легко избавиться методом пробелов, рассмотренного в начале статьи. В данной ситуации такой способ деинсталляции можно применить. Действовать нужно следующим образом:
- Нажать ПКМ по названию столбика, в котором есть пустоты.
- В контекстном меню нажать на «Выделить» и в следующем окне указать «Пустые ячейки». После закрытия окошка в выбранном столбце выделятся только пустоты, а ячейки с информацией останутся незатронутыми.
- Щелкнуть ПКМ по любой выделенной ячейки и нажать по строчке «Удалить». Откроется небольшое окно, в котором надо поставить тумблер напротив поля «Строки», а затем кликнуть «ОК».
- Проверить результат. Строчки, в которых присутствовали пустые ячейки, должны полностью деинсталлироваться из таблицы. Как и говорилось выше, минус метода в том, что ячейки с информацией также удалятся.
Как удалить лишние строки под данными или скрыть их
В процессе заполнения таблицы в Excel часто появляются пустые строки, в которых, на самом деле, прописана скрытая информация. Лишние ячейки возможно удалить следующим образом:
- Выделить пустую ячейку ЛКМ и зажать одновременно кнопки «Ctrl+Shift+End». Данная команда выделит оставшиеся ячейки, в которых на самом деле что-то написано.
- Кликнуть ПКМ по ячейке и в окошке контекстного типа выбрать вариант «Удалить».
- Проверить удалились ли лишние пустоты. Выбранные ячейки со скрытыми данными должны деинсталлироваться, как и в предыдущем методе.
Иногда пользователю не хочется удалять информацию из скрытых ячеек таблицы. В таком случае их можно скрыть. Скрытие строчек в Microsoft Office Excel осуществляется по следующей инструкции:
- Выделить ячейку под последней строкой с данными и зажать «Ctrl+Shift+End» для выделения оставшихся лишних пустот.
- После выделения всех пустот по любой из них надо кликнуть ПКМ и щелкнуть по варианту «Скрыть».
- Можно зажать кнопки «Ctrl+9» для скрытия лишних ячеек.
- Зажать «Ctrl+Shift+9», если пустоты нужно будет опять сделать видимыми.
Как быстро удалить пустые строки в Excel с помощью VBA
VBA — это специальный язык программирования, предназначенный для автоматизации процессов в редакторах Microsoft Office. С его помощью можно будет в кратчайшие сроки удалить пустые ячейки в Excel, скопировав нужный код программы. Для реализации такого способа деинсталляции не обязательно быть программистом. Далее будет рассмотрено несколько команд, реализуемых на VBA в Эксель.
Макрос 1. Удалить пустые строки в выбранном диапазоне
Если выделить нужные строки и ввести данный код, то можно удалить все пустоты указанного диапазона. При этом пользователь не увидит никаких предупреждений, сообщений, всплывающих диалоговых окон и т.д. Увидеть код для удаления пустот в диапазоне можно на следующем изображении:
Чтобы ввести макрос в Excel на языке программирования VBA и запустить его, необходимо:
- Переключиться в раздел «Разработчик», находящийся в списке параметров сверху главного меню.
- Кликнуть по кнопке «Запись макроса».
- Скопировать код с изображения выше и ввести его в соответствующее поле.
- Сохранить изменения нажатием на «ОК».
- Для запуска программы необходимо перейти во вкладку «Макросы», выбрать нужный код по названию созданных, выделить диапазон, в котором предстоит удалить пустоты, и кликнуть «ОК».
Важно! Созданный макрос сохранится в Excel, и его не нужно будет вводить каждый раз для выполнения конкретного действия.
Макрос 2. Удалить все пустые строки в Excel
С помощью написанного кода можно деинсталлировать сразу все пустоты, которые находятся на активном листе Эксель. Для этого используется следующий код:
Макрос 3. Удалить строку, если ячейка пуста
Это метод пробелов, который был описан выше, реализуемый с помощью кода. Данный способ позволяет удалить всю строку, в которой присутствует одна или несколько пустых ячеек, а также избавиться от лишних строк. Представленный код будет выглядеть так:
Перед запуском любого кода в Excel рекомендуется создать копию своей работы во избежание утери важных сведений в случае допущения ошибки.
Как добавить макрос в свою книгу
Для записи кодов в Excel создается своя книга. Выше был рассмотрен альтернативный метод создания и запуска макросов. Есть еще один способ, который заключается в выполнении следующих шагов:
- Открыть лист, в котором нужно удалить какие-либо ячейки.
- Зажать клавиши «Alt+F11», чтобы запустить встроенный редактор «Visual Basic».
- В графе параметров слева открывшегося окошка нажать по слову «Insert», а затем перейти во вкладку «Module».
- Вставить нужный код программы в отобразившееся окошко.
- Щелкнуть по F5, чтобы проверить код на работоспособность.
- Кликнуть по кнопке «Сохранить» для добавления макроса в свою книгу.
Дополнительная информация! Чтобы активировать созданный макрос в следующий раз, необходимо зайти в книгу, выбрать соответствующую таблицу, зажать «Alt+F8» с клавиатуры, выбрать нужный код и щелкнуть по кнопке «Выполнить».
Как удалить пустые строки в Excel с помощью сортировки
Сортировка данных в таблице помогает удалить пустоты. Данная операция выполняется по алгоритму:
- Выделить нужный диапазон ячеек ЛКМ.
- Перейти в раздел «Данные» сверху главного меню программы и кликнуть по кнопке «Сортировка».
- В следующем меню выбрать столбец для отсортировки информации в нем и нажать «ОК».
- Убедиться, что таблица отсортирована. Пустые строки расположатся под таблицей. Их при необходимости можно будет удалить.
Как удалить пустые строки в Excel с помощью фильтрации
Процесс выполнения поставленной задачи подразделяется на следующие этапы:
- Аналогичным образом выделить таблицу и переключиться в раздел «Данные» сверху окна программы.
- Теперь вместо сортировки нажать на кнопку «Фильтр».
- В появившемся окошке надо поставить галочку напротив значения «(Пустые)».
- Проверить, что все пустые ячейки в табличке выделились и удалить их стандартным методом, рассмотренным выше.
Перед выполнением способа фильтрации данных понадобится выделить весь диапазон таблицы, иначе фильтрация будет осуществляться только до первой пустоты.
Обратите внимание! Для деинсталляции пустых ячеек рассмотренным выше способом пользователю потребуется аккуратно отфильтровать каждый столбец в таблице, чтобы не удалить нужную информацию.
Как убрать пустые строки в Excel с помощью выделения группы ячеек
В Эксель есть встроенный инструмент, с помощью которого можно группами выделять ячейки. С его помощью удаление пустот производится по алгоритму:
- Выделить всю таблицу ЛКМ.
- Кликнуть по значку лупы графе вкладок сверху окна программы. Это меню «Найти и выделить».
- В контекстном меню щелкнуть по строчке «Выделить группу ячеек…».
- В отобразившемся окне поставить тумблер в поле «Пустые ячейки» и щелкнуть по «ОК». В таблице выделятся все пустоты.
- Удалить строку методом пробелов и проверить результат.
Как удалить пустые строки в Экселе с помощью вспомогательного столбца
Для деинсталляции пустот рядом с таблицей можно создать столбец, который будет выступать в роли вспомогательного элемента. Это один из самых быстрых и надежных способов удаления. Чтобы реализовать данный метод, требуется выполнить несколько простых манипуляций по пошаговой инструкции:
- Создать справа от исходной таблицы еще один столбик и назвать его, к примеру, «Пустая строка», чтобы не путаться в дальнейшем.
- Записать формулу «Считать пустоты», указав соответствующий диапазон, в котором программа выполнит проверку на наличие пустых строк.
- Когда пустые строчки будут обнаружены, их останется только выделить и деинсталлировать.
Важно! Данная формула выглядит следующим образом: «=СЧИТАТЬПУСТОТЫ(А6:D6)». Вместо букв в скобках указывается диапазон ячеек.
Заключение
Таким образом, существует несколько способов удаления пустых строк в Microsoft Excel, каждый из них актуален для конкретного случая. Чтобы разбираться в теме, необходимо внимательно ознакомиться с вышеизложенной информацией.
Оцените качество статьи. Нам важно ваше мнение:
You need to test that there are any blanks.
If WorksheetFunction.CountBlank(Worksheet.Columns("A:A")) > 0 Then
Worksheet.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
You can just use On Error Resume Next to skip over the line if there are no blanks, but it’s generally preferable to test for a specific condition, rather than assuming you know what the error will be.
As far as I can see you’d only get the «No Cells Found» message if every cell in Column A has a value.
EDIT: Based on @brettdj’s comments, here’s an alternative that still uses CountBlank:
If WorksheetFunction.CountBlank(Intersect(worksheet.UsedRange, ws.Columns("A:A"))) > 0 Then
worksheet.Columns("A:A").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
Of course UsedRange is notoriously fickle and may be bigger than it appears. I think it’s best to first determine the actual range where the rows are to be deleted and then check the SpecialCells in that range, e.g.:
Sub DeleteRows()
Dim ws As Excel.Worksheet
Dim LastRow As Long
Set ws = ActiveSheet
LastRow = ws.Range("A" & ws.Rows.Count).End(xlUp).Row
With ws.Range("A2:A" & LastRow)
If WorksheetFunction.CountBlank(.Cells) > 0 Then
.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End If
End With
End Sub
One last note — I changed the variable from «worksheet» to «ws» as «worksheet» is an Excel reserved word.
Макрос для выделения и удаления пустых строк в Excel
Смотрите также строка не известно,: День добрый дамыНужен макрос удаляющий определял как-бы диапазон, то удалить строчку
Как выделить все пустые строки макросом
цикле’ Author : & «:A» &End If инструментов, тогда в можно выделить неВозможно такое? что
в центре» по черезElse ввод значений, изменениеИсходные коды макросов для иногда может быть и господа. эти всегда разные до какой строчки нужно..For i = The_Prist??? lastRow).SpecialCells(xlCellTypeBlanks).EntireRow.DeleteEnd If конце кода для до конца пустой бы Макрос видел всем строкам столбцовФайл — Параметры -diapaz2.EntireRow.Hidden = True формата границ или выделения, удаления, скрытия
и вторая -Пользуюсь данным кодом,
строки (27, 28, нужно удалять пустыеИ может ли lLastRow To 1’ Topic_HEADER :End Sub
Next
переменной diapaz2.Select следует столбец и потерять
название что ему E:F и строкам
Настройка ленты (FileEnd If
цвета фона и и добавления пустых
т.е. начиная с
всё замечательно, но... 30, 33)
строки, чтобы по макрос автоматически выполняться
Step -1 Удаление всех пустых
den45444If diapaz2 Is
изменить метод на
ценные данные. Лучше надо удалить (строчку)
столбцов H:I ?
- Options -
End Sub
т.п. строк в таблицу
последней неизвестной строкиВ результате объединения
Pelena
всей странице в
при открытии файла..?
If Application.CountA(Rows(i)) =
строк в таблице: А вот макрос Nothing Then [Delete]: написать свой макросRoman777KoGG Customize Ribbon)Пример третьего VBA-кода:Далее в цикле проверяются Excel по условию
и заканчивая второй
сдвоенных строк происходит: Готовое решение Удаление низ не пошел.Alex_ST 0 Then Rows(i).Delete’ Topic_URL : на копирование листаMsgBox «Ненайдено ниодногоdiapaz2.[Delete] для автоматического выделения:: ….Как вставить строки макросом? все строки в
пользователя. строкой нужно найти сдвиг вниз полупустой строк по критериюА уже пустые: ну, тогда иNext
’ Post_Author : в другую книгу пустого столбца!»Удалить пустые столбцы макросом: всех пустых столбцовDersariusWith ActiveSheet .Cells.UnMerge…В открывшемся окне редактора Если мы изменим
этом диапазоне, каждаяЕсть таблица годового бюджета, строки с пустой строки.Апострофф строки определяет по пишите:проверку условия на’ Post_URL : + удаление пустыхElseSub DelColumn() в таблице Excel.
, Добрый день! Сначалоили Visual Basic выберите код в этом по отдельности, на разделенная на отдельные ячейкой A иИ данная полупустая: Вариант -
столбцу С с
Макрос для удаления пустых строк
If Cells(i,15).Text = под свои нужды…’ DateTime : строк в диапазоне.diapaz2.[Insert]Dim i AsОткройте редактор кода макросов ищете последнюю заполненнуюWith ActiveSheet .Columns(«E:F»).UnMerge в меню же месте как количество непустых ячеек. группы статей расходов
удалить её.
строка всегде лежит
200?'200px':''+(this.scrollHeight+5)+'px');">For r = 20
пустыми ячейками. "" Then Rows(i).Delete
miwgun 10.09.2006
Может кому-нибудь пригодится:End If
Long Visual Basic (ALT+F11):
строку, потом циклом
.Columns("H:I").UnMergeInsert - Module
показано ниже, то В том случаи
и кварталы. Каждая200?'200px':''+(this.scrollHeight+5)+'px');">PS = Range("A" &
под массивом заполненных To Cells.Rows.Count
ТО есть логика
а выполнять какие-либо: Если это возможно
' Purpose :
200?'200px':''+(this.scrollHeight+5)+'px');">Private Const strName As
End Sub
Dim diapaz1 AsВ редакторе создайте новый
проверяете пустая илиsafed195
и в появившийся
получиться инструмент для
если метод CountA
группа статей расходов
Rows.Count).End(xlUp).Row
Макрос для скрытия пустых строк
ячеек A1:M… (вIf Cells(r, 1).Borders(xlEdgeRight).LineStyle такая. необратимые операции с уберите синий треугольник Удаление всех пустых String = «ОбщиеПример четвертого VBA-кода: Range
модуль выбрав инструмент:
нет строчка (если
: KoGG, спасибо, все
пустой модуль скопируйте добавления и вставки
возвращает значение 0, разделена между собой
For i = нашем случае M44).
= xlNone ThenСмотрит стольбец G,
денными автоматом при
пожалуйста.. строк в таблице
файлы.xlsm"Если же вы хотите,
Dim diapaz2 As «Insert»-«Module» и введите
у вас определяется работает. Аж прям
и вставьте следующие
строк после пустых: то адреса этих
пустыми строками:
PS To 2
И у этой
Exit For ага всего 157
открытии как-то стрёмно.Файл в приложении..
' Notes :
Private Const strNameL
чтобы макрос работал
Range
в него этот
Добавление строк макросом
именно первым столбцом не верится. Я строки:diapaz2.[Insert] ячеек дополняют несмежныйНам необходимо удалить все Step -1 полупустой строки всегда
If Cells(r, 2)
строк.
Уж лучне кнопочку
Alex_ST'---------------------------------------------------------------------------------------
As String = исключительно только для
Set diapaz1 = VBA-код макроса:
пустота строки, тогда еще чайник, три
Sub DeleteEmptyRows() LastRow
Добавить: диапазон в переменной
пустые строки вIf Cells(i, 1)
заполнены столбец M, = "" Or
Начинает смотреть столбец сделать.
: И уж поучитесь
If MsgBox("Удалить все "СМЕТА"
пустых столбцов предварительно
Application.Range(ActiveSheet.Range("A1"), _
Sub SelectColumn()
будет так): ночи решал задачи,
= ActiveSheet.UsedRange.Row -Sub AddLine()
diapaz2 еще на
таблице. Для этого
= ""Then
I и L
Cells(r, 2) =
С, так А1,miwgun формулировать вопросы. пустые строки на’вывод листа strNameL выделенного определенного диапазонаActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))Dim i As200?’200px’:»+(this.scrollHeight+5)+’px’);»>sub удаление_строк() не получилось… 1 + ActiveSheet.UsedRange.Rows.Count
Dim i As
одну пустую строку. сначала необходимо ихRows(i).Delete
(в нашем примере «…» Or Cells(r, А2 пустая, Вторую: С удалением разобрался,Все ответы В листе?», vbOKCancel Or в файл strName листа перед запускомFor i = Longi_n = cells(rows.count,1).end(xlUp).rowsafed195 ‘определяем размеры таблицы LongВ конце макроса выделяются выделить. Если выделятьEnd If это 45 строка). 2) = «…»
exceltable.com
Удаление всех пустых строк на листе
стороку удаляю. А3, спасибо. ТОЧНОСТИ соответствуют вопросу-теме vbQuestion Or vbDefaultButton1,Sub копия_для_договора() макроса, то в 1 To diapaz1.Columns.CountDim diapaz1 AsFor i=1 to: А можно прописать Application.ScreenUpdating = FalseDim diapaz1 As
все пустые строки, вручную, то потребуетсяNextДумал удалить её Then Rows(r).Delete: r А4 заполнены, А5Подскажите еще пожалуйста, топика: «Удаление пустых
«Удалить пустые строки?»)Dim str1 As начале макроса следуетIf WorksheetFunction.CountA(diapaz1.Columns(i).EntireColumn) = Range i_n через команды цикличность? For r = Range находящиеся внутри диапазона много времени иЭтот код удаляет через: = r - пустая, 5ю строку как одним макросом строк» = vbCancel Then
String изменить строку создания 0 ThenDim diapaz2 Asif cells(i,1)=»» then Например, имеются файлы LastRow To 1Dim diapaz2 As
определенным переменной diapaz2. сил. Кроме того, все строки между200?’200px’:»+(this.scrollHeight+5)+’px’);»>s = Range(«A» & 1 удаляю. и так обработать все эксель-книгиЧто просили, то Exit SubDim firstRow&, lastRow&, экземпляра объекта дляIf diapaz2 Is Rangerows(i).delete «тест1» и «тест2». Step -1 ‘проходим
Range Если же таблица
нужно еще быть последней первой/верхней и Rows.Count).End(xlUp).RowNext r до последней определенной из конкретного каталога(включая и получили. ТемDim lLastRow As lSt& переменной diapaz1, на: Nothing ThenSet diapaz1 =end if Я обращаюсь к от последней строкиSet diapaz1 = не сдержит ни уверенным что строка самой нижней 44ойCells(s + 1,
planetaexcel.ru
Макрос удаления пустых строк в таблице
RAN по столбцу G вложенные каталоги)? более, что пример Long, i Asstr1 = ThisWorkbook.PathЧитайте также: Как выделить
Set diapaz2 = Application.Range(ActiveSheet.Range(«A1»), _next i
файлу «тест1» и до первой If Application.Range(ActiveSheet.Range(«A1»), _ одной пустой строки, действительно является пустой, (по столбцу «A») 1) =: ячейки.Alex_ST не приложили… Long & Application.PathSeparator строки в Excel
diapaz1.Columns(i).EntireColumnActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))end sub выполняю определенную процедуру, Application.CountA(Rows(r)) = 0ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell)) тогда выводиться соответственное чтобы вместе с и не удаляетНо вот куда200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub Мяу()JayBhagavan
: Ну, это ужТут народ что,lLastRow = ActiveSheet.UsedRange.RowWorkbooks.Open Filename:=str1 & макросом.ElseFor i =_Boroda_
потом обращаюсь к Then Rows(r).Delete ‘еслиFor i = сообщение.
ней не удалить 45ую строку. вставить .Delete?Dim lr&, i&
: Spaunrus, с Вас совсем оффтоп.
телепатически должен догадываться, — 1 + strName
Внимание! Следует помнить оSet diapaz2 = 1 To diapaz1.Columns.Count: файлу2 и опять в строке пусто 1 To diapaz1.Rows.Count важную информацию из
RANAlex_ST
Application.ScreenUpdating = False
файл-пример, согласно правил
Лучше уж завести по признаку отсутствия
ActiveSheet.UsedRange.Rows.CountWith Workbooks(strName) том, что если Application.Union(diapaz2, diapaz1.Columns(i).EntireColumn)If WorksheetFunction.CountA(diapaz1.Columns(i).EntireColumn) =Roman777 ту же процедуру.
— удаляем ееIf WorksheetFunction.CountA(diapaz1.Rows(i).EntireRow) =Как удалить строку макросом? бюджета или формулу.: Сорокпоследняя строка: ОБЪЕДИНЁННЫЕ ЯЧЕЙКИ -With ActiveSheet форума, в котором для рассмотрения вопроса каких данных вApplication.ScreenUpdating = FalseThisWorkbook.Sheets(strNameL).Copy Before:=.Sheets(1) таким образом создаватьEnd If 0 Then, а если несколько Но бывает, что Next r End 0 Then Если нужно сделать Для автоматического решения
200?’200px’:»+(this.scrollHeight+5)+’px’);»>PS = Cells.Find(«*», , ЗЛО!!!lr = .Columns(1).Find(«Исполнитель», выделены строки под обработки нескольких файлов
каких столбцах должныFor i =lSt = Columns(«A:A»).Find(What:=»КОНЕЦ экземпляр объекта дляEnd IfIf diapaz2 Is
пустых подряд? файла «тест1» нет
Sub
If diapaz2 Is
так чтобы макрос данной задачи лучше
, , xlByRows,Отвыкайте от них , , xlPart).Row удаление.
директории отдельную тему, удаляться строки? lLastRow To 1 ТАБЛИЦЫ»).Row переменной diapaz1, тоNext Nothing Then
200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub tt() и надо, пропустивЗакройте редактор и вернитесь Nothing Then
автоматически не только написать свой макрос, xlPrevious).Row сами и отучайте — 3Spaunrus например, с названиемAlex_ST Step -1firstRow = 1 тогда нельзя передIf diapaz2 IsSet diapaz2 =i_n = Cells(Rows.Count,
его, обратиться к в Excel.Set diapaz2 = выделял, но и который сам проверитMrRuslanBB других.For i =: Пример во вложении. что-то типа:: А приложение уIf Application.CountA(Rows(i)) =lastRow = lSt
CyberForum.ru
Макрос удаление не нужных строк (Макросы/Sub)
запуском макроса выделять Nothing Then diapaz1.Columns(i).EntireColumn 1).End(xlUp).Row
файлу «тест2». КакойТеперь нажмите сочетание Alt+F8
diapaz1.Rows(i).EntireRow сам удалял пустые и выделит все: Доброе утро!Yar4i
lr To 20На самом деле,»Как макросом обработать вас на компе 0 Then Rows(i).Delete — 1 все ячейки листа
MsgBox «Ненайдено ниодногоElseFor i = командой можно прописать
или кнопкуElse целые и смежные пустые строки вНапишите пожалуйста макрос,: да я знаю. Step -1 даже наверно удобней, все Excel-файлы из что ли?NextRange(«A» & firstRow
или все ячейки
пустого столбца!"
Set diapaz2 = i_n To 1
эту цикличность, то
Макросы
Set diapaz2 =
диапазоны ячеек без
таблице годового бюджета.
которыйя неверно написал…If Len(.Cells(i, 2)) чтобы Макрос определял каталога(включая вложенные каталоги)?»
miwgun
Application.ScreenUpdating = True & ":A" &
любого столбца, строки.Else Application.Union(diapaz2, diapaz1.Columns(i).EntireColumn)
Step -1 есть последовательное обращение
на вкладке
Application.Union(diapaz2, diapaz1.Rows(i).EntireRow)
использования других инструментов,
Откройте редактор Visual Basic
удалит все пустые строки не в результате = 0 Or по какую строчкуА если отвечать: Еще одна попыткаEnd Sub lastRow).SpecialCells(xlCellTypeBlanks).EntireRow.Delete Иначе это затормозитdiapaz2.[Delete]End If
If Cells(i, 1)
ко всем файламРазработчик
End If
тогда в конце (ALT+F11):
со сдвигом вверх
"объединения", а в
Left$(.Cells(i, 2).Value, 1)
работать, по столбцу
в пределах данной
miwgun
Sub DeleteEmptyRows2()ActiveSheet.Shapes(«Button 1»).Delete
программу Excel, так
End IfEnd If
= "" Then при их наличии?
.
End If
кода для переменнойИ воздайте в нем. результате «разъединения». Я Like «[. « А. темы, то смотрите: Дружище!!’—————————————————————————————ActiveSheet.Shapes(«Button 2»).Delete как один листEnd Sub
NextRows(i).DeleteKoGGВ открывшемся окнеNext diapaz2.Select следует изменить новый модуль дляЗаполненных
excelworld.ru
Макрос для выделения и удаления пустых столбцов в Excel
разъединяю уже объединённое & Chr(133) &В примере выделенны топик «Создать списокНе кипятись!!)))’ Procedure :
Как выделить все пустые столбцы макросом
ActiveSheet.Shapes(«Button 3»).Delete содержит аж 1Пример второго VBA-кода:If diapaz2 Is
End If: For Each wb_Tek будут перечислены всеIf diapaz2 Is метод на [Delete]: текущей книги «Insert»-«Module»,строк более 50 тыс. ранее каким-то хулиганом «]» Then .Rows(i).Delete желтым строки, которые файлов в видеФайл я приложил.. DeleteEmptyRows2.Save 048 576 строкКак скрыть пустые столбцы Nothing ThenNext i In Workbooks ‘
доступные вам в Nothing Then
diapaz2.[Delete] а потом запишите, среди них очень и вот!)Next
должны быть в
гиперсылок на листе"После выполнения макроса
' Author :.Close 0
и тогда они макросом? Но если
MsgBox "Ненайдено ниодногоEnd Sub
. . .
данный момент дляMsgBox "Ненайдено ниодной
Удалить: в него следующий
много пустых.Причем разъединяю сразу
End With итоге удалены.
( ) и
строки 1 343 слэн
End With
все будут обрабатываться
вам нужно не
пустого столбца!"Roman777
Next запуска макросы, в
пустой строки!"
Sub DelLine()
VBA-код макроса:
Учитывая такое количество
как только скопируюEnd SubЭто при условии делайте сами на 461 708 736
’ Topic_HEADER :End Sub макросом, на что удалить, а толькоElse:safed195 том числе толькоElseDim i AsSub SelectLine() строк, предполагаю, что
видимые ячейки наАпострофф что размер таблицы основании данных там 839 932 у Почему не работаетAndreTM потребуются дополнительные ресурсы скрыть (например, приdiapaz2.Select
_Boroda_: KoGG, а можно что созданный макросdiapaz2.[Insert] LongDim i As макрос хорошо будет новый лист.
: ТС не говорил, и пустых строк рекомендаций гуру форума. меня должны остаться… макрос удаления пустых: А форматирование ячеек системы и время. подготовке документа наEnd If, Вы правы, тут попросить формулу, чтобы
DeleteEmptyRowsEnd IfDim diapaz1 As Long работать при использованииДалее запускаю макрос что данные, не может меняться.SpaunrusAlex_ST строк? сметы при таком
den45444
Макрос для удаления пустых столбцов
печать), тогда этуEnd Sub не учитывал, что на Листе удалялись. Выберите его иEnd Sub RangeDim diapaz1 Asмассива удаляющий все строки, подлежащие удалению, неSmiley: Все привет!: Файл примера -
’ Topic_URL :
подходе не сбивается
: Помогите с решением
строку кода следуетТеперь если нам нужно
при удалении i-й все строки, начиная
нажмите кнопкуПример четвертого VBA-кода:
Dim diapaz2 As Range
.
если ячейка B могут начинаться с
: Spaunrus, мой вариантЭто снова я!
это, конечно, здорово,' Post_Author :
в копии? макроса. Нужно удалить
модифицировать несколько иначе:
удалить пустые столбцы строки i+1 строка
с 1001 строки?
Выполнить (Run)
Если же вы хотите,
RangeDim diapaz2 As
Пример файла прикрепляю пуста, начиная с
точки.
вообще не катит?
Нашел вот такой
но хотелось бы
слэн
Макрос для скрытия пустых столбцов
И ещё бы пустые строки вdiapaz2.EntireRow.Hidden = True из таблицы годового становится i-й. АKoGG- все пустые чтобы макрос работалSet diapaz1 =
Range
во вложении.
конца, но остается
WasilichXapa6apga
код: ещё знать, по
' Post_URL : добавить переименование созданного
диапазоне, от первойСкрыть пустые столбцы макросом:
бюджета, выберите инструмент:
я обычно вводил:
строки на листе исключительно только для
Application.Range(ActiveSheet.Range("A1"), _Set diapaz1 =
Hugo121 45 строка.
: Интересно, кто ставит
: Вариант , ВамSub Del_SubStr() Dim
отсутствию данных в
' DateTime :
листа, чтобы его
строки до концаSub HidColumn()
«РАЗРАБОТЧИК»-«Выполнить»-«Макросы»-«SelectColumn»-«Выполнить». переменную, которую вычитал
Не по теме:
будут удалены.
пустых строк предварительно
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))
Application.Range(ActiveSheet.Range(«A1»), _
Добавление пустых столбцов макросом
: Массив никаким бокомТак как в в одном месте должен подойти на sSubStr As String каких столбцах должны 17.04.2010, 13:47 потом можно было
таблицы, с учетом
Dim i As
Все пустые столбцы автоматически
на каждом шаге:Rows("1001:" & Rows.Count).Delete Shift:=xlUp
safed195 выделенного определенного диапазона
For i =ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))
в удалении строк 45ой строке ячейка
три точки в
100% 'искомое слово или
удаляться строки?' Purpose :
отыскать быстрее. того, что ниже
Long выделены. Теперь достаточно
200?'200px':''+(this.scrollHeight+5)+'px');">sub удаление_строк()
safed195: Имеется таблица. Если
листа перед запуском
1 To diapaz1.Rows.Count
For i =
листа участвовать не В пуста.
другом троеточие -lLastRow =ThisWB.Sheets(1).Cells(Rows.Count, "G"
фраза(может быть указанием
Но в общем
Удаление всех пустых
А по идее,
таблицы находится текст
Dim diapaz1 As только воспользоваться встроеннымdim k as: KoGG, спасибо!!!!! в столбце Н макроса, то вIf WorksheetFunction.CountA(diapaz1.Rows(i).EntireRow) = 1 To diapaz1.Rows.Count может.Pelena Chr(133)?
) .End(xlUp).Row»G» = на ячейку) Dim случае:
строк в таблице надо вообще в с пустыми строками, Range инструментом Excel: «ГЛАВНАЯ»-«Ячейки»-«Удалить»-«Удалить longmailomsk строки не содержат начале макроса следует 0 ThenIf WorksheetFunction.CountA(diapaz1.Rows(i).EntireRow) =Другое дело если: Начните цикл наТак можно ставить Ставите имя столбца lCol As Longзаменяйте в цикле’ Notes : «общий накопитель» скидывать которые должны оставаться.
exceltable.com
Удаление пустых строк в диапазоне (Макросы/Sub)
Dim diapaz2 As строки с листа».i_n = cells(rows.count,1).end(xlUp).row: Из 1с выгружаются никаких значений (пустые) изменить строку созданияIf diapaz2 Is 0 Then нужно переместить только строку ниже, либо что попало и
по какому нужно
‘номер столбца с макроса DeleteEmptyRows’————————————————————————————— не сметы в
Пример прикрепляю Range Или нажать комбинациюFor i=1 to
данные в таблицу то такие строки экземпляра объекта для Nothing ThenIf diapaz2 Is данные листа (оставив
вычисляйте последнюю строку как попало - определить кол-во строк!
просматриваемыми значениями DimIf Application.CountA(Rows(i)) =If MsgBox("Удалить все
виде для печати,den45444
Set diapaz1 =
горячих клавиш CTRL+=. i_n exel 97/2003! надо удалить.
переменной diapaz1, на:Set diapaz2 =
Nothing Then строки на местах,
по столбцу М,
пробел три точки,
Spaunrus
lLastRow As Long,
0 Then Rows(i).Delete
пустые строки на
а даннве из: Application.Range(ActiveSheet.Range(«A1»), _ А после в
if cells(i-k,1)=»» thenПосле этого данныеКазалось бы прощеSet diapaz1 = Selection diapaz1.Rows(i).EntireRow
Set diapaz2 = со всем их
а не по
точка пробел точка: Я наверно тупица)))
li As Longна проверку своего
листе?", vbOKCancel Or
смет, в единуюAndreTM
ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell)) появившемся окне «Удалениеrows(i-k).delete
загружаю в Access,
некуда. Не могуЧитайте также: Как выделитьElse diapaz1.Rows(i).EntireRow форматированием, хотя можно А
и т. д.
Вставил вот так, sSubStr = InputBox("Укажите условия.
vbQuestion Or vbDefaultButton1, таблицу, с датами, Благодарю за помощь.
For i = ячеек» выбрать опцию
k=k+1
при проверке загрузки создать рабочий макрос!
столбцы в ExcelSet diapaz2 =
Else и быстренько форматы
Yar4i Порядок какой то
запускаю, ничего не
значение, которое необходимо
Ну, например для "Удалить пустые строки?")
и ссылками на
А если взять 1 To diapaz1.Columns.Count
«столбец» и нажатьend if данных получается что
KoGG
макросом.
Application.Union(diapaz2, diapaz1.Rows(i).EntireRow)
Set diapaz2 =
удалить) - тогда
: а куда -1
нужен.
происходит( найти в строке», проверки по столбцам = vbCancel Then заказы/договора. Тогда в
относительно ячейки соIf WorksheetFunction.CountA(diapaz1.Columns(i).EntireColumn) = ОК.next i после или перед
: Sub Удалить_пустые_строки_H() DimВнимание! Следует помнить оEnd If Application.Union(diapaz2, diapaz1.Rows(i).EntireRow) можно переложить данные вписать? (или +1)Yar4i4Sub Del_Array_SubStr() Dim «Запрос параметра», «» С (столбец № Exit Sub последующем можно и значением «Итого на 0 ThenВ начале кода мыend sub данными есть пустые i& With ActiveSheet
excelworld.ru
Удаление пустых строк
том, что еслиEnd If
End If из одного массиваПо столбцу М
: Спасибо. ThisWB As Workbook lCol = Val(InputBox(«Укажите
3)и Е (столбецOn Error Resume анализ смет легко материал:» ?If diapaz2 Is описываем диапазон ячеек
KuklP
строки!
For i =
таким образом создавать
Next
End If в другой и
думал, но этот
Моей радости нет
Set ThisWB =
номер столбца, в
№5)цикл получается такой: Next прикрутить. Хотя я
den45444 Nothing Then для переменной diapaz1,
: Проще:Подскажите как через
.Cells(.Rows.Count, «H»).End(xlUp).Row To экземпляр объекта дляIf diapaz2 IsNext выгрузить результат на
столбец не стабилен. границ. Ещё неделю
ThisWorkbook Dim li&
котором искать указанноеFor i =
Dim RNG As не знаю, может
:Set diapaz2 = с которым будем
200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub www()
макрос удалить эти
1 Step -1
переменной diapaz1, то Nothing Then
If diapaz2 Is лист. В первых же
назад я не
lLastRow = ThisWB.Sheets(1).Cells(Rows.Count,
значение», «Запрос параметра», lLastRow To 1 Range, x, n вы ведете учетAndreTM diapaz1.Columns(i).EntireColumn работать. Он находиться
On Error Resume пустые строки, до If Trim$(.Cells(i, «H»))
тогда нельзя передMsgBox «Ненайдено ниодной Nothing Then
К сожалению не
двух столбцах идет представлял, что это «A»).End(xlUp).Row For li
1)) If lCol Step -1
As Long, nr
выполненных работ отдельными
, Как можно вставить
Else
в границах между
Next и после данных!
= «» Then запуском макроса выделять
пустой строки!»MsgBox «Ненайдено ниодной могу сейчас посмотреть нумерация (нет номера
выполнимо.
= lLastRow To = 0 Then
If Cells(i,3)=»» And
As Long, d табличками, где и
данный макрос вSet diapaz2 = ячейкой A1 и
Range(Cells(1, 1), Cells(Cells(Rows.Count,
Sub Udalenie_Pustyh_Strok() Dim
.Rows(i).Delete Shift:=xlUp Next все ячейки листаElse пустой строки!» файл, но может — строку неYar4i4
1 Step -1 Exit Sub lLastRow
Cells(i,5)=»» Then Rows(i).Delete As Long так все нормально… этот макрос: Application.Union(diapaz2, diapaz1.Columns(i).EntireColumn)
последней используемой ячейкой 1).End(xlUp).Row, 1)). _
r As Long, End With End
или все ячейкиdiapaz2.[Delete]
Else
быть можно обойтись берем, а коль
: Доброго постпраздничного дня If ThisWB.Sheets(1).Cells(li, 3)
= ActiveSheet.UsedRange.Row -
Next
Set RNG =
miwgun
200?’200px’:»+(this.scrollHeight+5)+’px’);»>Private Const strName AsEnd If на рабочем листе
SpecialCells(4).EntireRow.Delete
FirstRow As Long,
Subили, если не любого столбца. ИначеEnd Ifdiapaz2.Select сортировкой? Так ненужные номер есть - Вам! = «» Then
1 + ActiveSheet.UsedRange.Rows.Count
miwgun ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants, 23): Доброго Всем дня!!!! String = «ОбщиеEnd If Excel.End Sub LastRow As Long определять последнюю строку
это затормозит программуEnd SubEnd If
строки сами уйдут то милости просим))Пользуюсь Вашей версией
ThisWB.Sheets(1).Rows(li).Delete Next li Application.ScreenUpdating = 0: А например в
n = RNG.RowПри работе над
файлы.xlsm»
NextПримечание. Последняя используемая ячейка
_Boroda_ FirstRow = ActiveSheet.UsedRange.Row по конкретному столбцу Excel, так как
Пример второго VBA-кода:
End Sub вниз, а нужныеPelena
макроса. Сегодня увидел, End Sub For li = этом файле, должны
+ 1 дипломом возникла следующаяPrivate Const strNameLIf diapaz2 Is
на листе –: Да уж сколько LastRow = ActiveSheet.UsedRange.Rows.Count : один лист содержитКак скрыть пустые строки
Теперь если нам нужно со всеми форматами: Я же не что макрос не
JayBhagavan lLastRow To 1
остаться эти строчкиFor Each x
проблема:
As String =
Nothing Then это ячейка, для раз здесь писали, — 1 +Sub Удалить_пустые_строки_H() Dim
аж 1 048 макросом? Но если автоматически выделить все будут наверху. знаю, какой Вы сработал, т.к. ко: Spaunrus, а так? Step -1 If
1 75 287 In RNG.Rows
Имеется порядка 1500 «СМЕТА»
MsgBox «Ненайдено ниодного которой были выполнены
что проще, но ActiveSheet.UsedRange.Row For r
i&, LastRow& With 576 строк и вам нужно не пустые строки вКак вариант чтоб
макрос используете. мне данные поступили Sub Del_Array_SubStr() lLastRow
Cstr(Cells(li, lCol)) = 354..
nr = x.Row
исходных экселек с’вывод листа strNameL пустого столбца!» любые изменения: ввод косячнее. На средних = LastRow To
ActiveSheet LastRow = тогда они все
удалить, а только таблице бюджета перед не потерять порядок
Вот например, из
в неверном виде. = Cells(Rows.Count, «A»).End(xlUp).Row sSubStr Then Rows(li).Delete
Соответственно, есть такихIf nr >
данными… в файл strNameElse значения, изменение границы, объемах еще нормально, FirstRow Step -1 .UsedRange.Rows.Count — .UsedRange.Row будут обрабатываться макросом,
скрыть (например, при тем как их — можно пронумеровать
четвертого сообщения. Считается В ячейке, определяющей
For li = Next li Application.ScreenUpdating файлов 1500.. n ThenНеобходимо в каждомSub копия_для_договора()diapaz2.EntireColumn.Hidden = True цвета фона или
а на больших
If Application.CountA(Rows(r)) = + 1 For а пользователь будет подготовке документа на удалить, выберите инструмент:
строки, вот тут номер строки, с удаление всей строки
lLastRow To 1 = 1 EndРебят, подскажите, можно
Range(Cells(n, 1), Cells(nr файле удалить пустые
Dim str1 AsEnd If формата отображения значений. не всегда. Я
0 Then Rows(r).Delete i = LastRow
ждать. печать), тогда эту «РАЗРАБОТЧИК»-«Код»-«Макросы»-«SelectLine»-«Выполнить». В результате
можно использовать массив. которой начинается удаление троеточие (или три Step -1 If SubКак бы его
ли этот процесс — 1, 1)).EntireRow.Delete строки(а точнее строки
String, rng1 AsEnd SubДалее в цикле поочередно не утверждаю, что End If Next To 1 Step
Во многих случаях пустые строку кода следует выделяться все пустые
Ну или формулу200?’200px’:»+(this.scrollHeight+5)+’px’);»>lr = .Columns(1).Find(«Исполнитель», , точки) располагались не Cells(li, 3) = так переписать, чтобы как то автоматизировать?d = nr — n не совсем пустые, Range, rng2 AsПример третьего VBA-кода:
planetaexcel.ru
Макрос. Удаление пустых строк .
проверяется каждый столбец вообще не работает,
r End Sub
-1 If Trim$(.Cells(i, строки на листе
модифицировать несколько иначе: ячейки только для протянуть и затем , xlPart).Row - в начале, а «» Then Rows(li).Delete он определял последнююЗаранее благодарен…Else а с заполненными RangeКак вставить столбец макросом? в диапазоне ячеек я утверждаю, чтоКазанский «H»)) = «» представляют собой проблему.diapaz2.EntireRow.Hidden = True пустых строк внутри «спецкопипастнуть». 3 в конце. Next li End заполненную ячейку поmiwgund = 0 некоторыми столбцами)str1 = ThisWorkbook.Path Если мы изменим определенным в переменной иногда работает неверно.: Then .Rows(i).Delete Shift:=xlUp Например, если вашаСкрыть: исходной таблицы.MrRuslanBBС неё начинаетсяЯ скопировал содержимое Sub столбцу G, а: Ок, спасибо, ща
End IfПробовал записать макрос & Application.PathSeparator код в этом diapaz1. Если вKuklPmailomsk Next End With
таблица с даннымиSub HidLine()Пример работы первого VBA-кода:: Сортировки хватило! следующий цикл For ячейки:Spaunrus потом удалял СТРОКИ буду разбираться!!!!n = nr
Sub Макрос4()Workbooks.Open Filename:=str1 & же месте как столбце количество ячеек: Привет, Саш. Да, приложите пример файла. End Sub содержит пустые строки,Dim i AsПустые строки, которые находиться
KoGGНапишите»М/к труб стальных: А так, все
определяя нужные поAlex_ST
+ 1 -’ strName
показано ниже, то со значением равно не косячнее. Просто Если данные критичные,safed195 то возникнут сложности Long под последними заполненными: Судя по примеруКод200?’200px’:»+(this.scrollHeight+5)+’px’);»>lr = .Columns(1).Find(«Исполнитель»,
бесшовных горячедеформированных…» очень круто!) пустым ячейкам столбца: Дмитрий! d’ Макрос4 Макрос
With Workbooks(strName) получиться инструмент для
0, то целый надо учитывать потолок замените их на: KoGG, будьте добры, с фильтрацией, сортировкой,Dim diapaz1 As
ячейками не будут формат не нужен. , , xlPart).RowКак можно учесть
Спасибо, заработало!) C. При этомЯ тут вNext
’ThisWorkbook.Sheets(strNameL).Copy Before:=.Sheets(1) добавления и вставки
столбец добавляется к areas range. ~8100+. абракадабру. Надо понять, а если строки
построением сводных, т.к. Range выделены. Теперь дляSub Удаление_пустых_данных() Dim — 2
эти точки, еслиHugo
не выдавая никаких теме спрашивал Юрия_МEnd Sub
’ Сочетание клавиш:.Save строк после пустых: несмежному диапазону, определенному Но тут-то речь что значит «пустые в столбце H Microsoft Excel считаетDim diapaz2 As удаления выделенных строк i&, j&, k&,получите строку на
они встречаться будут: Рядом тему посмотрите: запросов? про разницу междуmiwgun Ctrl+ъ.Close 0diapaz2.[Insert] в переменной diapaz2. всего лишь о строки» — они
не пустые, а пустую строку разрывом Range
пользователю осталось только
A, B, LastCol& одну ниже
в ячейке?KuzmichKuzmich пустой строкой «»: 1.Тема диплома отношения
planetaexcel.ru
Макрос удаления строки, если вторая ячейка строки пустая (Макросы/Sub)
’End With
Добавить пустые столбцы макросом:В конце кода проверяется: шапке.
действительно пустые, или в них цифра таблицы.Set diapaz1 =
выбрать инструмент: «ГЛАВНАЯ»-«Ячейки»-«Удалить»-«Удалить A = ActiveSheet.UsedRange.ValueYar4i(все первоначальные условия: Так все же: ‘удаление строк при и vbNullString, а к Excel не
Selection.SpecialCells(xlCellTypeBlanks).SelectEnd SubSub AddColumn() если в таблице
В данном примере предоставлены в них значение 0, то как
Обычно для удаления Application.Range(ActiveSheet.Range(«A1»), _
строки с листа». ReDim B(1 To
: В одиннадцатом сообщении такие же , по какой ячейке?
условии пустых ячеек он что-то не имеет, но связанSelection.EntireRow.DeleteНужно, чтобы приDim i As не найдено ни и описаны исходные
"пустая строка", или
макрос меняется? пустых строк включаютActiveSheet.Cells.SpecialCells(xlCellTypeLastCell))
Или нажать комбинацию
UBound(A), 1 To
файл с новой
только точки (троеточие Столбца С или в столбце G
отвечает... Наверное, занят он с фондовымEnd Sub
копировании листа в Long одного пустого столбца, коды VBA-макросов для они скрыты.chumich
фильтр, отбирают пустые
For i =
горячих клавиш CTRL+=.
UBound(A, 2)) LastCol кучкой данных и — не понял А? With Sheets(«Лист1») .Range(«G1:G» или пропустил вопрос.
рынком (формирование портфеля),При открытии нового другую книгу одновременноDim diapaz1 As тогда выводиться соответственное работы с пустыми
Dersarius: If Trim$(.Cells(i, «H»)) строки вручную и 1 To diapaz1.Rows.Count А после в = UBound(A, 2) через FIND не пока что это)
Yar4i4 & .Cells(Rows.Count, «G»).End(xlUp).Row)
Может вы просветите? специальность финансы и файла макрос не удалялись пустые строки. Range
сообщение. Если же столбцами в таблице: Эх, нелегкая эта
= 0 Then затем их удаляют,If WorksheetFunction.CountA(diapaz1.Rows(i).EntireRow) = появившемся окне «Удаление For i = выйдет, т.к. мы не стационарны в: Доброе утро. _ .SpecialCells(xlCellTypeBlanks).EntireRow.Delete End Ну, просто любопытственно кредит работает…
den45444Dim diapaz2 As
пустые столбцы присутствуют, Excel.
штука VBA когда .Rows(i).Delete Shift:=xlUp что хотя и 0 Then
ячеек» выбрать опцию 1 To UBound(A) не знаем где ячейке.Таблица содержит ненужные With для образования.
2. Треугольник… виноват..
Выдает ошибку 1004:Данная:
Range тогда все ониУ нас иметься таблица мало знаешь =((((
safed195 не сложно, но
If diapaz2 Is «строку» и нажать If A(i, 1) заканчиваются данные внизу.
Спасибо. пустые строки, которыеSmiley
Alex_ST3. Я изучил
команда не применимаAndreTMSet diapaz1 = одновременно выделяются несмежным
годового бюджета сРебят проблема, подскажите: Спасибо, KoGG и занимает некоторое время. Nothing Then ОК. <> «» Then В данном случаеВсех мужиков с нужно удалить.: Dim ThisWB as
: Блин! страницу Приемы.. Этот
для перекрывающихся диапазонов, Первый вариант. Только
Application.Range(ActiveSheet.Range("A1"), _ диапазоном с помощью
поквартальными показателями сумм пожалуйста с макросом.
chumich! Вы мнеДля автоматизации подобной задачиSet diapaz2 =
Вначале кода присваиваем для k = k они заканчиваются 45ой
прошедшим праздником!Строки эти начинаются
Workbook Set ThisWB=ThisWorkBookНикак не привыкну код мне непример экселевского файла в копии.ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell)) метода для переменной
статей расходов:Есть Лист1 с очень помогли!!!! проще всего использовать
diapaz1.Rows(i).EntireRow переменной diapaz1 диапазон + 1 For строкой и её-тоRAN с (A20) всегда.
Dim li& lLastRow к синтаксису управляющих подходит, так как
в приложении…den45444For i = diapaz2.SelectКаждый квартал разделен между данными, нужен макросKoGG
простой макрос. НажмитеElse ячеек в границах
j = 1 и нужно удалить,: Заканчиваются неизвестно какой =ThisWB.Sheets(1).Cells(Rows.Count, «G»).End(xlUp).Row For конструкций на этом он удаляет ПУСТЫЕЯ был бы: Решил задачу попроще. 1 To diapaz1.Columns.Count
собой пустыми столбцами. который удалит не: Лучше для 0:
Alt+F11 или выберитеSet diapaz2 = между A1 и To LastCol B(k,
т.к. у неё200?'200px':''+(this.scrollHeight+5)+'px');">Or .Cells(i, 2).Value Like строкой.
li = lLastRow движке форума и
строчки, а мне
очень признателен, если200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub удаление_пустых_строк()If WorksheetFunction.CountA(diapaz1.Columns(i).EntireColumn) =
Как удалить пустые столбцы Нам необходимо удалить
нужные строчки иIf .Cells(i, «H») на вкладке Application.Union(diapaz2, diapaz1.Rows(i).EntireRow) последней используемой ячейкой j) = A(i, пустые ячейки A45, «*…*»Вторая ячейка строк To 1 Step «на автомате» написал нужно удалять, строчки, бы умы форумаDim firstRow&, lastRow&, 0 Then макросом? Если нужно все пустые столбцы пустые. = 0 ThenРазработчикEnd If на рабочем листе j) Next j B45, C45, D45,
Yar4i4 подлежащих удалению содержит -1 If ThisWB.Sheets(1).cells(li, ссылку так, как в кот некоторые сего откликнулись и lSt&, lSt1&
If diapaz2 Is сделать так чтобы
: Спасибо. «…» или пуста. 3)=»» Then ThisWB.Sheets(1).Rows(li).Delete привык писАть везде, столбцы заполненны.. помогли разобраться…lSt = Columns(«A:A»).Find(What:=»конец
из таблицы. НетПример, Лист1 нужно .Rows(i).Delete Shift:=xlUp
- Visual BasicEnd If
Excel.
End If Next
E45 и т.д.,
Nothing Then макрос автоматически не
смысла вручную выделять оставить только названиеsafed195
excelworld.ru
Макрос. Удаление пустых строк со сдвигом вверх
(Developer — Visual BasicNext
Примечание. Последняя используемая ячейка i ActiveSheet.UsedRange.Value = а вот G45,Я вписал этот Она имеет границу
Next liТак попробуйте? в квадратных скобках…Alex_STAlex_ST
таблицы»).RowSet diapaz2 = только выделял, но каждый столбец перед улицы, прибор, сер.номер,система: А можно еще
Editor)If diapaz2 Is
на листе - B End Sub I45 и L45 код в строку ( в отличие
SpaunrusА исправить нельзя.: ну так в: Sub DeleteEmptyRows()firstRow = 1 diapaz1.Columns(i).EntireColumn и сам удалял удалением, ведь это (остальное удалить из попросить вставку в. Если вкладки Разработчик Nothing Then это любая ячейка
MrRuslanBB содержат нули (они с условием «если» от ячеек из: Kuzmich, не совсемmiwgun чём проблема-то?’—————————————————————————————lastRow = lSt
Else пустые целые и займет много времени шапки, что бы макрос, чтобы убрал не видно, тоMsgBox «Ненайдено ниодной для, которой были
: Благодарю! всегда содержат цифры,
и заработало. «бороды» (A37-A45 - то, нужно он
: Если столбец NПросто замените в’ Procedure : — 1Set diapaz2 = вертикальные диапазоны ячеек и сил. К не было пустых «Объединить и поместить можно включить ее пустой строки!» выполнены любые изменения:Моментально форматирует файл. но какая этоYar4i их удалять нельзя)). по столбцу G «Число сделок» пустой, макросе The_Prist в DeleteEmptyRowsRange(«A» & firstRow
Application.Union(diapaz2, diapaz1.Columns(i).EntireColumn) без использования других
тому же случайно
CyberForum.ru
строчек между ними).