Excel: Видалити рядок, якщо клітинка в певному стовпці порожня?


23

Я є новачком в Excel, тому, вибачте, будь ласка, якщо це щось легко зробити. Я переглянув безліч варіантів, але не зміг знайти те, що мені потрібно.

В основному, я хочу видалити всі рядки, які не містять значення у стовпці C. Як мені це робити?

Я зараз роблю це вручну для 5000+ продуктів, і це мене зводить з розуму.


2
Чому питання про стек OverFlow з рішеннями VBA перенесено на Super User?
brettdj

Відповіді:


31

Ви можете зробити це дуже швидко, якщо клітини справді порожні, використовуючи SpecialCells

Посібник

  • Виберіть стовпчик С
  • Натисніть F5, потімSpecial
  • BlanksПотім перевірте OK(див. Цей крок на знімку внизу)
  • Видаліть вибрані рядки (наприклад, клацніть правою кнопкою миші у виборі> Видалити клітинки ... > Увесь рядок або за допомогою стрічки (див. Другий знімок екрана))

VBA

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

Знімок екрана, що показує меню "Перейти до спеціального" -> "Заготовки" Знімок екрана, який показує, як використовувати стрічку для видалення цілих рядків у виділенні


8

Ось простий ручний метод

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

Цей процес може бути автоматизований за допомогою VBA, якщо потрібно. Спробуйте запустити макрореєстратор, щоб почати


Простий, але ефективний. Робіть чудеса!
Tiana987642

2

Я думаю, що найпростіше припустити, що у вас немає купки інших формул в інших клітинах - просто сортувати все за стовпцем С, а потім видалити всі рядки, які містять пробіл для стовпця С (функція сортування поставить порожні значення для стовпця С у верхній частині файлу).

Підсумовуючи:

  • Клацніть на складеній комірці паперу над коміркою з позначкою "1" і ліворуч від комірки з позначкою "A" (щоб виділити все)
  • Клацніть на Дані та сортуйте
  • Сортуйте за стовпцем С і зробіть найменші значення першими
  • Просто виділіть рядки вниз, поки ви не потрапите в перший рядок зі значенням стовпця С, і видаліть усе, що ви виділили

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

Ви можете помістити цей код у модуль аркуша (клацніть правою клавішею миші та клацніть правою кнопкою миші та виберіть "Переглянути код"):

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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.