
Ich habe eine Tabelle, die nach einer ID und einer berechneten Zelle sortiert ist. Ich sortiere das Blatt nach der ID und der berechneten Zelle und erhalte so Paare verwandter Zeilen. Ich möchte einfach die zweite Zeile jedes Paares auf dem gesamten Blatt löschen. Normalerweise gibt es etwa 3000 Zeilen.
Gibt es eine einfache Möglichkeit, die zweite Zeile zu löschen oder in ein anderes Blatt zu verschieben?
Antwort1
Keine Programmierantwort, da Sie sagten, Sie seien mit VBA in Excel nicht vertraut, aber wenn es ein einmaliges Problem ist, dann machen Sie es einfach in Excel:
- Fügen Sie eine neue Spalte hinzu (sagen wir A)
- Stellen Sie die erste Zeile (A1) auf
True
- Setzen Sie Zeile A2 auf
=NOT(A1)
- Ziehen Sie dann Zeile A2 nach unten zu allen Ihren Zeilen.
Wenden Sie dann einen automatischen Filter dort an, wo die Spalte A
ist false
, wählen Sie alle zurückgegebenen Zeilen aus und löschen Sie sie, und entfernen Sie dann den Filter.
Antwort2
Wenn es sich um eine einmalige Aufgabe handelt, verwenden Sie Sephs Antwort. Wenn es wiederholt werden muss, verwenden Sie VBA wie folgt:
Sub DemoDeleteAlternateRows()
Dim iRow As Long, LastRow As Long
Dim sh As Worksheet
Set sh = ActiveSheet ' <-- Maybe change this to refer to a specific sheet
Application.FindFormat.Clear ' Just in case Find was last used with a Format
LastRow = sh.Cells.Find(What:="*", After:=sh.Cells(1, 1), _
SearchDirection:=xlPrevious, SearchOrder:=xlByRows, SearchFormat:=False).Row
For iRow = LastRow To 1 Step -1
' Delete even numberede rows (to delete odd numbered
' rows, instead use If iRow Mod 2 = 1 Then).
If iRow Mod 2 = 0 Then
sh.Rows(iRow).Delete
End If
Next
End Sub
Stellen Sie sicher, dass Sie vor dem Ausführen eine Sicherungskopie erstellenbeliebigMakro auf Ihrem Blatt. Makros verwenden kein Rückgängig!