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

23

Я новичок в Excel, поэтому извините, если это легко сделать. Я просмотрел много вариантов, но не смог найти то, что мне было нужно.

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

Я делаю это вручную прямо сейчас для 5000+ продуктов, и это сводит меня с ума.

Джон
источник
2
Почему был задан вопрос о Stack OverFlow с решениями VBA, перенесенными в Super User?
brettdj

Ответы:

31

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

Руководство

  • Выберите столбец C
  • Нажмите F5, затемSpecial
  • BlanksЗатем проверьте OK(см. Этот шаг на рисунке внизу)
  • Удалить строки, которые сейчас выделены (например, щелкните правой кнопкой мыши в выделении> Удалить ячейки ... > Всю строку или через ленту (см. Второй снимок экрана))

VBA

Sub QuickCull()
    On Error Resume Next
    Columns("C").SpecialCells(xlBlanks).EntireRow.Delete
End Sub

Снимок экрана, показывающий меню «Перейти к специальному разделу» -> «Заготовки» Снимок экрана, показывающий, как использовать ленту для удаления целых строк в выделении

brettdj
источник
8

Вот простой ручной метод

  1. Применить Auto Filterк вашему листу
  2. Фильтр по столбцу CБланк
  3. Выбрать все видимые строки
  4. Удалить строки
  5. Удалить фильтр

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

Крис Нейлсен
источник
Простой, но эффективный. Творить чудеса!
Tiana987642
2

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

В итоге:

  • Нажмите на сложенную бумажную ячейку над ячейкой, обозначенной «1», и слева от ячейки, отмеченной «А» (чтобы выделить все)
  • Нажмите на данные, а затем сортировать
  • Сортировать по столбцу C и сделать наименьшее значение первым
  • Просто выделите строки до тех пор, пока не достигнете первой строки со значением для столбца C, и удалите все, что вы выделили

источник
0

Это должно работать.

Columns("C:C").Select
Set rngRange = Selection.CurrentRegion
lngNumRows = rngRange.Rows.Count
lngFirstRow = rngRange.Row
lngLastRow = lngFirstRow + lngNumRows - 1
lngCompareColumn = ActiveCell.Column
For lngCurrentRow = lngLastRow To lngFirstRow Step -1
If (Cells(lngCurrentRow, lngCompareColumn).Text = "") Then _
Rows(lngCurrentRow).Delete
Next lngCurrentRow
Ник
источник
-1

Вы можете поместить этот код в Sheet Module (щелкните правой кнопкой мыши вкладку Sheet и выберите «View Code»):

Sub Delete_Blank_Rows()


'Deletes the entire row within the selection if the ENTIRE row contains no data.

'We use Long in case they have over 32,767 rows selected.

Dim i As Long
Dim LastRow As Integer

'We turn off calculation and screenupdating to speed up the macro.

 With Application
     .Calculation = xlCalculationManual
     .ScreenUpdating = False

     'Reduce the work on the calc and define the range

     LastRow = Range("A" & Rows.Count).End(xlUp).Row
     Range("A2:A" & LastRow).Select

     'We work backwards because we are deleting rows.

     For i = Selection.Rows.Count To 1 Step -1
          If WorksheetFunction.CountA(Selection.Rows(i)) = 0 Then
              Selection.Rows(i).EntireRow.Delete
          End If
     Next i

    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With

End Sub
Дэвид
источник
1
Это удаляет строки, где вся строка пуста? -если, это похоже на ответ @drnewman. В частности, вопрос гласит: Удалить строку, если ячейка в определенном столбце пуста.
Давиденко
Добро пожаловать в Супер пользователя! Пожалуйста, внимательно прочитайте вопрос. Ваш ответ не отвечает на оригинальный вопрос.
DavidPostill