Ich habe ein Makro, aber es löscht die Zeilen, die ich behalten möchte, basierend auf einer Nummer (die Nummer der Zeile), die es behalten muss ein anderes Blatt, aber alles, was ich versuche, verschiebt einfach die letzte Übereinstimmung oder löscht jede Zeile, die ich behalten möchte. What happensMakro löscht, was ich behalten möchte
Sub KeepRows()
Dim x As Range, u As Range
Dim y As String
With Sheets("Sheetwithnumberrow")
Set x = .Range(.Cells(2, "H"), .Cells(Rows.Count, "H").End(xlUp))
End With
For Each u In x
If u.Text = "keep row" Then
Sheets("SheetthatIwannaClean").Select
y = u.Offset(0, -1)
Rows(y).ClearContents
End If
Next
End Sub
EDIT: Ich habe das Bild von dem, was passiert ist, habe ich versucht, auf ein anderes Blatt zu bewegen, anstatt den Inhalt der Reinigung, dem Bus nur die letzte Zeile bewegen.
Product ROW Instruction ROW Instruction
1 6 keep row 6 keep row
2 15 keep row 15 keep row
3 18 Try Next 17 keep row
4 24 keep row 24 keep row
5 28 keep row 28 keep row
Die Logik es ist wie thig, geht es an der Reihe, wenn die Anweisung zu halten ist, zu halten hat, und zur nächsten Zeile gehen. Aber das Problem ist, dass der Code die Zeile löscht.
Sieht aus wie ein Tippfehler. Versuchen Sie 'For Each u In x' anstelle von' For Each c In x'. Wenn Sie vor dem Subsystem die Option Explicit angeben, ist es wahrscheinlicher, dass Sie solche Fehler selbst bemerken. Ändere auch 'Sheets (" Sheet thatIwannaClean "). Wähle' to 'Sheets (" Sheet thatIwannaClean "). Activate' (Du kannst diese Zeile jedoch komplett entfernen). – Ralph
Oh, Entschuldigung, ich habe den Fehler gemacht, hier zu schreiben, im Code es U. – Yoshio
Wenn du die Zeile behalten willst, dann ändere die Bedingung: 'Wenn du Text <>" Zeile behalten "Dann? – trincot