Как убрать строку в таблице excel. Как удалить пустые строки в Excel

Приветствую! При работе в экселе у вас наверняка возникала такая ситуация: вы поработали с таблицей (например, семантическое ядро), удалили лишнее, и у вас оказались пустые строчки таблицы вперемешку с заполненными. Идти напролом и удалять вручную пустые строчки можно, но это скучно и неспортивно. Хорошо, если таких строк всего несколько штук, а если несколько десятков или сотен? Для ускорения работы воспользуемся встроенными средствами Excel 2007.

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

Заходим в по адресу Главная -> группа Редактирование -> Найти и выделить -> Выделение группы ячеек.. .

Появляется окошко Выделение группы ячеек . Выделяем пункт пустые ячейки и нажимаем ОК:

Все пустые ячейки теперь выделены и можно их удалять. Делаем это через меню Главная -> группа Ячейки -> Удалить -> Удалить ячейки… (или нажать комбинацию клавиш ‘Ctrl ‘ + ‘‘)

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

Во многих документах Microsoft Word пользователи предпочитают отделять один текст от другого с помощью отступов, которые делаются клавишей «Enter» . Но если Вы столкнулись с таким файлом, или скачали его из Интернета, и отступы между тестом не нужны, то сразу возникает вопрос: как удалить в Ворде лишние пустые строки?

Ответ очевиден: поставьте курсор в конец первого абзаца и нажмите «Delete» необходимое количество раз, пока не удалится пустота. А вот если у Вас в документе не две или даже пять страниц, а страниц сто, тогда используя подобный способ, Вы потратите очень много времени.

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

Для примера возьмем вот такой фрагмент. Как видите, в нем есть большие отступы.

Для удаления лишних рядов, можно воспользоваться функцией «Найти и заменить» . Для этого на вкладке «Главная» в группе «Редактирование» нажмите на кнопку «Заменить» .

После этого, откроется нужное нам окно «Найти и заменить» . Вызвать его можно и с помощью горячих клавиш «Ctrl+H» . Подробнее про замену в Ворде , можно прочесть в статье, перейдя по ссылке.

В этом окне нажмите на кнопку «Больше» .

В поле «Найти» появится знак «^p» .

Дальше, скопируйте «^p» и вставьте его повторно в поле «Найти» несколько раз. Затем вставляйте «^p» один раз в поле «Заменить на» . Чтобы выполнить замену в документе, нажмите на кнопку «Заменить все» .

В примере три подряд идущих части будут заменены на одну. В поле «Найти» лучше много «^p» не указывать, достаточно вставить его два или три раза.

Когда замена будет выполнена в документе, появится вот такое окно, в котором можно посмотреть количество замен. Нажмите в нем «ОК» .

После замены, мой текст выглядит следующим образом. Отступов хоть и стало меньше, но они есть. Поэтому включаю видимость скрытых знаков: на вкладке «Главная» нажмите кнопочку «Отобразить все знаки» .

С непечатаемыми знаками можно посмотреть, сколько пустых рядов осталось. В примере, между 1 и 2 абзацем – 3 строки, между 2 и 3 – 2. Поэтому, чтобы еще уменьшить отступы, нужно два знака «^p^p» заменить на один – «^p» .

Чтобы убрать последнюю пустую строку, нужно один знак абзаца заменить пробелом. В поле «Найти» вставляем «^p» , в «Заменить на» ставим курсор и нажимаем один раз пробел на клавиатуре.

Теперь нет отступов между напечатанным, и количество листов в документе уменьшилось.

Если же у Вас между абзацами нет пустых строк, но есть небольшое расстояние, тогда необходимо удалить пробелы между ними. Для этого на вкладке «Главная» кликните «Интервал» и выберите из меню «Другие варианты междустрочных интервалов» .

Если в документе стоит разрыв раздела или страницы, тогда чтобы его удалить, кликните мышкой по нему и нажмите «Delete» . Если у Вас большой текст, тогда снова воспользуйтесь заменой, только, нажав на кнопку «Специальный» , вместо знака «^p» выберите из списка «Разрыв раздела» или «Разрыв страницы» .

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

У меня получился вот такой текст, в котором нет пустых рядочков.

Думаю, и Вы смогли убрать пустые строки в тексте в Ворде. Ведь мы рассмотрели, что можно сделать, если они созданы различными способами, или неоднократным нажатием «Enter» , или установкой интервала между абзацами, или есть лишние строки в таблице.

Всем пользователям, которые работают с электронными таблицами в офисном редакторе Excel, очень часто приходится убирать пустые ячейки, находящиеся в строках, чтобы они не загромождали рабочее пространство. Сейчас будет рассмотрено, как в таблице «Эксель» удалить пустые строки. Некоторые решения пригодятся и в других ситуациях. Например, при аналогичных действиях со столбцами или отдельными ячейками.

Как удалить пустые строки в «Экселе» двумя простейшими методами?

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

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

Как удалить пустые строки в «Экселе», если пустые поля чередуются с данными? В этом случае вопрос решается другим способом. Для этого следует зажать клавишу Ctrl, а затем, удерживая ее, выделить каждую строку, подлежащую удалению. После этого в меню правого клика выбираете соответствующую операцию. Заметьте, если использовать клавишу Del, будет произведена только очистка содержимого, а не удаление целых строк. В прочем, для самого простого случая можно использовать и ее.

Как в «Экселе» удалить пустые строки с помощью сортировки?

Есть еще несколько методов для проведения таких операций. Одним из решений вопроса того, как удалить пустые строки в «Экселе», может стать применение инструмента сортировки.

Для этого нужно после выделения всей таблицы (Ctrl + A) в разделе данных выбрать меню сортировки и фильтра. Тут применяется команда упорядочивания от минимального к максимальному (пустые строки окажутся снизу). После этого их можно удалить. Если порядок построения данных важен, сначала необходимо использовать вставку пустого столбца со После удаления строк снова производите упорядочивание по пронумерованному столбцу.

Удаление строк с использованием фильтра

Решить вопрос того, как удалить пустые строки в «Экселе», можно и при помощи простого фильтра. Устанавливают его путем выделения столбца, группы столбцов или всей таблицы. Кроме того, применяют команду «Фильтр» в разделе сортировки.

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

Выделение групп ячеек

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

В этом случае следует использовать раздел редактирования на главной панели с выбором кнопки «Найти и выделить». Из выпадающего меню выбирается строка выделения группы ячеек. А в окошке условия активируется та, которая указывает на пустые единицы. После этого в разделе операций с ячейками выбирается кнопка удаления.

Вместо послесловия

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


Баги и глюки Excel (3)

Как удалить строки по условию?

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

Способ первый:
Использовать встроенное средство Excel - фильтр. Сначала его необходимо "установить" на листе:

  • Выделяем таблицу с данными, включая заголовки. Если их нет - то выделяем с самой первой строки таблицы, в которой необходимо удалить данные
  • устанавливаем фильтр:
    • для Excel 2003 : Данные -Фильтр -Автофильтр
    • для Excel 2007-2010 : вкладка Данные (Data) -Фильтр (Filter) (или вкладка Главная (Home) -Сортировка и фильтр (Sort&Filter) -Фильтр (Filter) )

Теперь выбираем условие для фильтра:

  • в Excel 2003 надо выбрать Условие и в появившейся форме выбрать непосредственно условие("равно", "содержит", "начинается с" и т.д.) , а напротив значение в соответствии с условием.
  • Для 2007-2010 Excel нужно выбрать Текстовые фильтры (Text Filters) и либо сразу выбрать одно из предлагаемых условий, либо нажать Настраиваемый фильтр (Custom Filter) и ввести значения для отбора в форме
Способ второй:
применить код VBA, который потребует только указания значения, которое необходимо найти в строке и номер столбца, в котором искать значение.
Dim lCol As Long Dim lLastRow As Long , li As Long Dim lMet As Long Dim arr sSubStr = InputBox(, "Запрос параметра" , "" ) If sSubStr = "" Then lMet = 0 Else lMet = 1 lCol = Val(InputBox(, "Запрос параметра" , 1)) If lCol = 0 Then Exit Sub lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count Application.ScreenUpdating = 0 Dim rr As Range For li = 1 To lLastRow If -(InStr(arr(li, 1), sSubStr) > 0) = lMet Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If Next li If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub

Sub Del_SubStr() Dim sSubStr As String "искомое слово или фраза(может быть указанием на ячейку) Dim lCol As Long "номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim lMet As Long Dim arr sSubStr = InputBox("Укажите значение, которое необходимо найти в строке", "Запрос параметра", "") If sSubStr = "" Then lMet = 0 Else lMet = 1 lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "Запрос параметра", 1)) If lCol = 0 Then Exit Sub lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count arr = Cells(1, lCol).Resize(lLastRow).Value Application.ScreenUpdating = 0 Dim rr As Range For li = 1 To lLastRow "цикл с первой строки до конца If -(InStr(arr(li, 1), sSubStr) > 0) = lMet Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If Next li If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub

Если значение sSubStr не будет указано, то будут удалены строки, ячейки указанного столбца которых, пустые.
Данный код необходимо поместить в стандартный модуль . Вызвать с листа его можно нажатием клавиш Alt + F8 , после чего выбрать Del_SubStr и нажать Выполнить . Если в данном коде в строке
If -(InStr(Cells(li, 1), sSubStr) > 0) = lMet Then
вместо = lMet указать lMet , то удаляться будут строки, не содержащие указанное для поиска значение. Иногда тоже удобно.
Но. Данный код просматривает строки на предмет частичного совпадения указанного значения. Например, если Вы укажете текст для поиска "отчет", то будут удалены все строки, в которых встречается это слово("квартальный отчет", "отчет за месяц" и т.д.). Это не всегда нужно. Поэтому ниже приведен код, который будет удалять только строки, указанные ячейки которых равны конкретно указанному значению:

Sub Del_SubStr() Dim sSubStr As String "искомое слово или фраза(может быть указанием на ячейку) Dim lCol As Long "номер столбца с просматриваемыми значениями Dim lLastRow As Long , li As Long Dim arr sSubStr = InputBox("Укажите значение, которое необходимо найти в строке" , "Запрос параметра" , "" ) lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение" , "Запрос параметра" "цикл с первой строки до конца If CStr(arr(li, 1)) = sSubStr Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If Next li If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub

Sub Del_SubStr() Dim sSubStr As String "искомое слово или фраза(может быть указанием на ячейку) Dim lCol As Long "номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim arr sSubStr = InputBox("Укажите значение, которое необходимо найти в строке", "Запрос параметра", "") lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "Запрос параметра", 1)) If lCol = 0 Then Exit Sub lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count arr = Cells(1, lCol).Resize(lLastRow).Value Application.ScreenUpdating = 0 Dim rr As Range For li = 1 To lLastRow "цикл с первой строки до конца If CStr(arr(li, 1)) = sSubStr Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If Next li If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub

Здесь так же, как и в случае с предыдущим кодом можно заменить оператор сравнения(Cells(li, lCol) = sSubStr) с равно на неравенство(Cells(li, lCol) sSubStr) и тогда удаляться будут строки, значения ячеек которых не равно указанному.

УДАЛЕНИЕ СТРОК НА ОСНОВАНИИ СПИСКА ЗНАЧЕНИЙ(МНОЖЕСТВЕННЫЕ КРИТЕРИИ)
Иногда бывают ситуации, когда необходимо удалить строки не по одному значению, а по нескольким. Например, если строка содержит или Итог или Отчет . Ниже приведен код, при помощи которого можно удалить строки, указав в качестве критерия диапазон значений.
Значения, которые необходимо найти и удалить перечисляются на листе с именем "Лист2". Т.е. указав на "Лист2" в столбце А(начиная с первой строки) несколько значений - они все будут удалены. Если лист называется иначе(скажем "Соответствия") в коде необходимо будет "Лист2" заменить на "Соответствия". Удаление строк происходит на активном в момент запуска кода листе. Это значит, что перед запуском кода надо перейти на тот лист, строки в котором необходимо удалить.

Sub Del_Array_SubStr() Dim sSubStr As String "искомое слово или фраза Dim lCol As Long "номер столбца с просматриваемыми значениями Dim lLastRow As Long , li As Long Dim avArr, lr As Long Dim arr lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение" , "Запрос параметра" , 1)) If lCol = 0 Then Exit Sub Application.ScreenUpdating = 0 lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count arr = Cells(1, lCol).Resize(lLastRow).Value With Sheets("Лист2" ) avArr = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End (xlUp)) End With "удаляем Dim rr As Range For lr = 1 To UBound (avArr, 1) sSubStr = avArr(lr, 1) For li = 1 To lLastRow "цикл с первой строки до конца If CStr(arr(li, 1)) = sSubStr Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If DoEvents Next li DoEvents Next lr If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub

Sub Del_Array_SubStr() Dim sSubStr As String "искомое слово или фраза Dim lCol As Long "номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim avArr, lr As Long Dim arr lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "Запрос параметра", 1)) If lCol = 0 Then Exit Sub Application.ScreenUpdating = 0 lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count "заносим в массив значения листа, в котором необходимо удалить строки arr = Cells(1, lCol).Resize(lLastRow).Value "Получаем с Лист2 значения, которые надо удалить в активном листе With Sheets("Лист2") "Имя листа с диапазоном значений на удаление avArr = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)) End With "удаляем Dim rr As Range For lr = 1 To UBound(avArr, 1) sSubStr = avArr(lr, 1) For li = 1 To lLastRow "цикл с первой строки до конца If CStr(arr(li, 1)) = sSubStr Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If DoEvents Next li DoEvents Next lr If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub

Чтобы код выше удалял строки не по точному совпадению слов, а по частичному(например, в ячейке записано "Привет, как дела?", а в списке есть слово "привет" - надо удалить, т.к. есть слово "привет"), то надо строку:

If CStr(arr(li, 1)) = sSubStr Then

If CStr(arr(li, 1)) = sSubStr Then

заменить на такую:

If InStr(1, arr(li, 1), sSubStr, 1) > 0 Then

If InStr(1, arr(li, 1), sSubStr, 1) > 0 Then

УДАЛЕНИЕ ИЗ ЛИСТА СТРОК, КОТОРЫХ НЕТ В СПИСКЕ ЗНАЧЕНИЙ(МНОЖЕСТВЕННЫЕ КРИТЕРИИ)
Т.к. в последнее время стало поступать все больше и больше вопросов как не удалять значения по списку, а наоборот - оставить в таблице только те значения, которые перечислены в списке - решил дополнить статью и таким кодом.
Значения, которые необходимо оставить перечисляются на листе с именем "Лист2". Т.е. указав на "Лист2" в столбце А(начиная с первой строки) несколько значений - после работы кода на листе будут оставлены только те строки, в которых присутствует хоть одно из перечисленных в списке значений. Если лист называется иначе(скажем "Соответствия") в коде необходимо будет "Лист2" заменить на "Соответствия". Удаление строк происходит на активном в момент запуска кода листе. Это значит, что перед запуском кода надо перейти на тот лист, строки в котором необходимо удалить.
В отличие от приведенных выше кодов, данный код ориентирован на то, что значения в списке указаны не полностью. Т.е. если необходимо оставить только те ячейки, в которых встречается слово "активы", то в списке надо указать только это слово. В этом случае если в ячейке будет записана фраза "Нематериальные активы" или "Активы сторонние" - эти ячейки не будут удалены, т.к. в них встречается слово "активы". Регистр букв при этом неважен.

"процедура оставляет в листе только те значения, которые перечислены в списке Sub LeaveOnlyFoundInArray() Dim sSubStr As String "искомое слово или фраза Dim lCol As Long "номер столбца с просматриваемыми значениями Dim lLastRow As Long , li As Long Dim avArr, lr As Long Dim arr Dim IsFind As Boolean lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение" , "www.сайт" , 1)) If lCol = 0 Then Exit Sub Application.ScreenUpdating = 0 lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count "заносим в массив значения листа, в котором необходимо удалить строки arr = Cells(1, lCol).Resize(lLastRow).Value "Получаем с Лист2 значения, которые надо удалить в активном листе With Sheets("Лист2" ) "Имя листа с диапазоном значений на удаление avArr = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End (xlUp)) End With "удаляем Dim rr As Range For li = 1 To lLastRow "цикл с первой строки таблицы до конца IsFind = False For lr = 1 To UBound (avArr, 1) "цикл по списку значений на удаление sSubStr = avArr(lr, 1) If InStr(1, arr(li, 1), sSubStr, 1) > 0 Then IsFind = True End If DoEvents Next lr "если значение таблицы не найдено в списке - удаляем строку If Not IsFind Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If DoEvents Next li If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub

"процедура оставляет в листе только те значения, которые перечислены в списке Sub LeaveOnlyFoundInArray() Dim sSubStr As String "искомое слово или фраза Dim lCol As Long "номер столбца с просматриваемыми значениями Dim lLastRow As Long, li As Long Dim avArr, lr As Long Dim arr Dim IsFind As Boolean lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "www..ScreenUpdating = 0 lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count "заносим в массив значения листа, в котором необходимо удалить строки arr = Cells(1, lCol).Resize(lLastRow).Value "Получаем с Лист2 значения, которые надо удалить в активном листе With Sheets("Лист2") "Имя листа с диапазоном значений на удаление avArr = .Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)) End With "удаляем Dim rr As Range For li = 1 To lLastRow "цикл с первой строки таблицы до конца IsFind = False For lr = 1 To UBound(avArr, 1) "цикл по списку значений на удаление sSubStr = avArr(lr, 1) If InStr(1, arr(li, 1), sSubStr, 1) > 0 Then IsFind = True End If DoEvents Next lr "если значение таблицы не найдено в списке - удаляем строку If Not IsFind Then If rr Is Nothing Then Set rr = Cells(li, 1) Else Set rr = Union(rr, Cells(li, 1)) End If End If DoEvents Next li If Not rr Is Nothing Then rr.EntireRow.Delete Application.ScreenUpdating = 1 End Sub

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

If Not rr Is Nothing Then rr.EntireRow.Delete

заменить на такую:

For li = 1 To lLastRow "цикл с первой строки до конца

1 - это первая строка; lLastRow - определяется автоматически кодом и равна номеру последней заполненной строки на листе. Если надо начать удалять строки только с 7-ой строки(например, в первых 6-ти шапка), то код будет выглядеть так:

For li = 7 To lLastRow "цикл с седьмой строки до конца

А если надо удалять только с 3-ей по 300-ю, то код будет выглядеть так:

For li = 3 To 300 "цикл с третьей строки до трехсотой

В этой статье я объясню, почему удаление пустых строк в Excel при помощи выделить пустые ячейки > удалить строку – это плохая идея, и покажу Вам 2 быстрых и правильных способа, как удалить пустые строки не разрушая данные. Все эти способы работают в Excel 2013, 2010 и в более старых версиях.

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

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

Никогда не удаляйте пустые строки, при помощи выбора пустых ячеек

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

  • Выделите данные от первой до последней ячейки.
  • Нажмите F5 , чтобы открыть диалоговое окно Go to (Переход).
  • В диалоговом окне нажмите кнопку Special (Выделить).
  • В диалоговом окне Go to special (Выделить группу ячеек) отметьте пункт Blanks (Пустые ячейки) и нажмите ОК .
  • Кликните правой кнопкой мыши по любой из выделенных ячеек и нажмите Delete (Удалить).
  • В диалоговом окне Delete (Удаление ячеек) выберите Entire row (Строку) и нажмите ОК .

Это очень плохой способ , делайте так только с очень простыми таблицами с парой дюжин строк, которые помещаются на одном экране, а ещё лучше – не делайте так совсем ! Главная причина – если строка с важными данными содержит хотя бы одну пустую ячейку, то удалена будет вся строка .

Например, у нас есть таблица клиентов, всего 6 строк. Мы хотим удалить строки 3 и 5 , потому что они пустые.

Сделайте так, как предложено выше, и получите такой результат:

Строка 4 (Roger) тоже исчезла, потому что ячейка D4 в столбце Traffic source оказалась пуста

Если Ваша таблица не велика, то Вы заметите потерю данных, но в реальных таблицах с тысячами строк Вы можете неосознанно удалить дюжины нужных строк. Если повезёт, Вы обнаружите потерю в течение нескольких часов, восстановите рабочую книгу из резервной копии и продолжите работу. А что если не повезёт, и у Вас не будет резервной копии?

Удаление пустых строк при помощи ключевого столбца

Этот метод работает, если в Вашей таблице есть столбец, который помогает определить, пуст рассматриваемый столбец или нет (ключевой столбец). К примеру, это может быть ID покупателя или номер заказа, или что-то подобное.


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

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