19

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

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

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

5 ответов5

25

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

Руководство

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

VBA

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

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

7

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .