2017-01-03 1 views
2

IMAGESchleife trought meine Zeilen und Zeile löschen, wenn zwei Zellen einen beliebigen Wert enthält

Würde dies für Schleife als machen wie die itherate und vergleichen A1 mit B1, wenn sie beide einen Wert enthält detele otherwhise zum überspringen und springen nächste Reihe und vergleichen Sie A2 mit B2, A3 mit B3 und so weiter bis etwa 100.

Sie können sehen, in meinem Beispiel IMAGE, wie A4 enthält einen Wert, aber B4 nicht überspringen, A5 und B5 gleich, aber A6 und B6 Both enthält einen Wert, so dass ich die Zeile löschen möchte, 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 

Antwort

4

Sie können es mit einem Einzeiler Aussage:

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

wo:

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

    Referenzen alle Spalte A Zellen von Zeile 4 nach unten nicht leeren

  • dauern

    .SpecialCells(xlCellTypeConstants, xlNumbers)

    wählt alle referenzierten Entfernungszellen mit einer Anzahl

  • .Offset(, 1).

    Verschiebungen resultierende Bereich um eine Spalte nach rechts (d.h. zu entsprechenden Zellen der Spalte B)

  • .SpecialCells(xlCellTypeConstants, xlNumbers)

    wählt diese letzteren Bereich Zellen referenzierten mit einer Anzahl

  • .EntireRow.Delete

    schließlich die Reihe der resultierenden Zellen löschen

0

Nichts ist überhaupt falsch mit user3598756 Lösung. Nur etwas schaffen, die ein bisschen mroe robust ist und vielleicht anpassungsfähig

Lassen Sie mich Ihre Meinung wissen:

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 
Verwandte Themen