Excel: czy usunąć wiersz, jeśli komórka w określonej kolumnie jest pusta?


23

Jestem kompletnym nowicjuszem w programie Excel, więc przepraszam, jeśli jest to łatwe do zrobienia. Przejrzałem wiele opcji, ale nie mogłem znaleźć tego, czego potrzebowałem.

Zasadniczo chcę usunąć wszystkie wiersze, które nie zawierają wartości w kolumnie C. Jak mam to zrobić?

Robię to teraz ręcznie dla ponad 5000 produktów, co doprowadza mnie do szaleństwa.


2
Dlaczego pytanie dotyczące Stack OverFlow z rozwiązaniami VBA zostało przeniesione do wersji Super User?
brettdj

Odpowiedzi:


31

Możesz to zrobić bardzo szybko, jeśli komórki są naprawdę puste przy użyciu SpecialCells

podręcznik

  • Wybierz kolumnę C.
  • Naciśnij F5, a następnieSpecial
  • Sprawdź Blankswięc OK(patrz ten krok na zdjęciu na dole)
  • Usuń zaznaczone wiersze (np. Kliknij prawym przyciskiem myszy zaznaczenie> Usuń komórki ... > Cały wiersz lub za pomocą wstążki (patrz drugi zrzut ekranu))

VBA

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

Zrzut ekranu przedstawiający menu Przejdź do specjalnego -> Puste miejsca Zrzut ekranu pokazujący, jak używać wstążki do usuwania całych wybranych wierszy


8

Oto prosta metoda ręczna

  1. Zastosuj Auto Filterdo swojego arkusza
  2. Filtruj według kolumny CPuste
  3. Wybierz wszystkie widoczne wiersze
  4. Usuń wiersze
  5. Usuń filtr

W razie potrzeby proces ten można zautomatyzować za pomocą VBA. Spróbuj uruchomić rejestrator makr, aby rozpocząć


Prosty, ale skuteczny. Zdziałaj cuda!
Tiana987642,

2

Myślę, że najłatwiejszą rzeczą, zakładając, że nie masz wielu innych formuł w innych komórkach, jest po prostu posortowanie wszystkiego według Kolumny C, a następnie usunięcie wszystkich wierszy, które są puste dla kolumny C (funkcja sortowania wstawi puste wartości dla kolumny C u góry pliku).

W podsumowaniu:

  • Kliknij złożoną komórkę papieru nad komórką oznaczoną „1” i na lewo od komórki oznaczonej „A” (aby podświetlić wszystkie)
  • Kliknij Dane, a następnie posortuj
  • Sortuj według kolumny C i spraw, aby najmniejsze wartości były pierwsze
  • Po prostu zaznacz wiersze w dół, aż trafisz do pierwszego wiersza z wartością dla kolumny C, i usuń wszystko, co zaznaczyłeś

0

To powinno działać.

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

Możesz umieścić ten kod w module arkusza (kliknij prawym przyciskiem myszy kartę Arkusz i wybierz „Wyświetl kod”):

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
Czy to usuwa wiersze, w których cały wiersz jest pusty? -jeśli tak, jest to podobne do odpowiedzi @drnewman. Pytanie konkretnie stwierdza: Usuń wiersz, jeśli komórka w określonej kolumnie jest pusta.
Davidenko

Witamy w Super User! Przeczytaj uważnie pytanie ponownie. Twoja odpowiedź nie odpowiada na pierwotne pytanie.
DavidPostill
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.