excel - index - Loop löste meine Zeilen und löschte Zeilen, wenn 2 Zellen einen Wert enthielten



ganze ausgeben (2)

BILD

Möchte man dies als eine for-Schleife machen, die A1 und A1 vergleicht und vergleicht, wenn beide einen Wert enthalten, dann springt man in die nächste Zeile und vergleicht A2 mit B2, A3 mit B3 und so weiter bis etwa 100.

Sie sehen in meinem Beispiel IMAGE, wie A4 einen Wert enthält, aber B4 nicht überspringt, A5 und B5 gleich, aber A6 und B6 Beide enthalten einen Wert, also möchte ich die Zeile löschen und weitermachen :)

Sub Empty_cell()

    Dim score1 As Integer, score2 As Integer, result As String, col As Integer, RangeStr1 As String, RangeStr2 As String

    col = 4
    Let RangeStr1 = "A" & col & ""
    Let RangeStr2 = "B" & col & ""

    score1 = Range(RangeStr1).Value
    score2 = Range(RangeStr2).Value

    If score1 >= 0 & score2 >= 0 Then

        Range(RangeStr1 & ":" & RangeStr2).Delete
        MsgBox "Deleted"
    Else
        MsgBox "Failed"
        col = col + 1 '

        MsgBox col
    End If
End Sub

Answer #1

Überhaupt nichts mit user3598756 Lösung überhaupt falsch. Ich biete nur etwas, das ein bisschen robust und vielleicht anpassungsfähig ist

Lass mich wissen was du denkst:

Option Explicit
Dim n As Long
Dim i As Long
Sub DeleteRows()

n = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row

For i = 4 To n
    Select Case Cells(i, 1)
        Case Is <> vbNullString
            Select Case Cells(i, 2)
                Case Is <> vbNullString
                    Cells(i, 1).EntireRow.Delete
            End Select
    End Select
Next i

End Sub

Answer #2

Sie können es mit einer Ein-Linien-Aussage machen:

Range("A4", Cells(Rows.count, "A").End(xlUp)).SpecialCells(xlCellTypeConstants, xlNumbers).Offset(, 1).SpecialCells(xlCellTypeConstants, xlNumbers).EntireRow.Delete

woher:

  • Range("A4", Cells(Rows.count, "A").End(xlUp))

    Verweist alle Zellen der Spalte A von Zeile 4 bis zur letzten nicht leeren Zeile

  • .SpecialCells(xlCellTypeConstants, xlNumbers)

    Wählt alle referenzierten Bereichszellen mit einer Zahl aus

  • .Offset(, 1).

    Verschiebt den resultierenden Bereich um eine Spalte nach rechts (dh zu entsprechenden Zellen der Spalte B)

  • .SpecialCells(xlCellTypeConstants, xlNumbers)

    wählt diesen letzteren referenzierten Bereich Zellen mit einer Nummer aus

  • .EntireRow.Delete

    Löscht schließlich die Zeile der resultierenden Zellen