Excel: Zeile löschen, wenn Zelle in bestimmter Spalte leer ist?

23

Ich bin ein absoluter Neuling in Excel, bitte entschuldigen Sie, wenn dies einfach ist. Ich habe viele Optionen durchgesehen, konnte aber nicht finden, was ich brauchte.

Grundsätzlich möchte ich alle Zeilen löschen, die keinen Wert in Spalte C enthalten. Wie würde ich das tun?

Ich mache das momentan manuell für über 5000 Produkte und das macht mich wahnsinnig.

John
quelle
2
Warum wurde eine Frage zu Stack OverFlow mit VBA-Lösungen gestellt, die auf Super User migriert wurden?
Brettdj

Antworten:

31

Sie können dies sehr schnell tun, wenn die Zellen mit wirklich leer sind SpecialCells

Handbuch

  • Wählen Sie Spalte C aus
  • Drücken Sie F5dannSpecial
  • Überprüfen Sie Blanksdann OK(siehe diesen Schritt im Bild unten)
  • Löschen Sie die jetzt ausgewählten Zeilen (zB Rechtsklick in Auswahl> Zellen löschen ... > Ganze Zeile oder über das Menüband (siehe zweiter Screenshot))

VBA

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

Screenshot mit dem Menü Gehe zu Spezial -> Leerzeichen Screenshot mit der Verwendung des Menübands zum Löschen ganzer Zeilen in der Auswahl

brettdj
quelle
8

Hier ist eine einfache manuelle Methode

  1. Wenden Sie Auto Filteran Ihrem Blatt an
  2. Filter in Spalte CBlank
  3. Markieren Sie alle sichtbaren Zeilen
  4. Zeilen löschen
  5. Filter entfernen

Dieser Vorgang kann bei Bedarf mit VBA automatisiert werden. Versuchen Sie, den Makrorecorder zu starten

chris neilsen
quelle
Einfach und doch effektiv. Wunder wirken!
Tiana987642
2

Ich denke, die einfachste Sache, vorausgesetzt, Sie haben nicht viele andere Formeln in den anderen Zellen, ist, einfach alles nach Spalte C zu sortieren und dann alle Zeilen zu löschen, die für Spalte C ein Leerzeichen enthalten (die Sortierfunktion setzt die Leerwerte für Spalte C oben in der Datei).

Zusammenfassend:

  • Klicken Sie auf die gefaltete Papierzelle über der mit "1" markierten Zelle und links von der mit "A" markierten Zelle (um alle hervorzuheben).
  • Klicken Sie auf Daten und sortieren Sie dann
  • Sortieren Sie nach Spalte C, und legen Sie fest, dass die kleinsten Werte an erster Stelle stehen
  • Markieren Sie einfach die Zeilen nach unten, bis Sie die erste Zeile mit einem Wert für Spalte C erreicht haben, und löschen Sie alles, was Sie markiert haben

quelle
0

Das sollte funktionieren.

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
Nick
quelle
-1

Sie können diesen Code in das Tabellenmodul einfügen (Klicken Sie mit der rechten Maustaste auf die Registerkarte "Tabelle" und wählen Sie "Code anzeigen" aus):

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
David
quelle
1
Dadurch werden Zeilen gelöscht, in denen die gesamte Zeile leer ist. -wenn dies der Fall ist, ist es ähnlich wie bei @drnewman answer. In der Frage heißt es speziell: Zeile löschen, wenn die Zelle in einer bestimmten Spalte leer ist.
Davidenko
Willkommen bei Super User! Bitte lesen Sie die Frage noch einmal sorgfältig durch. Ihre Antwort beantwortet nicht die ursprüngliche Frage.
DavidPostill