2017-03-16 21 views
1

その行のセルが等しい場合は、行全体を削除する方法を理解する上で問題があります。セルの値に基づいて行全体を削除する

これは私が書いたもので、どのように動作させるかについてのアイディアですか?空の行を削除するには

Dim rng As Range, rrng As Range 
    Set rng = Range("A1:E1") 
    Set rng = Range(rng, rng.End(xlDown)) 
    For Each rrng In rng 
    If rrng.Value = 0 Then .EntireRow.Delete 
Next rrng 
+2

これは、すべての空白を0にした以前の質問のフォローアップですか? – user3598756

答えて

1

あるときにそれを削除します。

Dim rng As Range, rrng As Range 
Set rng = Sheet1.Range("A1:E1") 
Set rng = Range(rng, rng.End(xlDown)) 
For Each rrng In rng 
If rrng.Value = 0 Then Sheet1.Rows(rrng.Row).Delete 
Next rrng 
0

、逆ループを使用して...

Option Explicit 
Public Sub Example() 
    Dim Row&, i& 

    i = Cells.SpecialCells(xlCellTypeLastCell).Row 

    For Row = i To 1 Step -1 
     Debug.Print Row ' Immediate Window 
     If Application.CountA(Rows(Row)) = 0 Then 
      i = i - 1 

      If IsEmpty(Cells(Row, 1)) Then 
       Rows(Row).Delete 
      End If 
     End If 
    Next 
End Sub 
1

これは私のソリューションです。これは、行のすべての値を合計し、合計は、私はあなたのコードにいくつかのマイナーな変更を加えて、私はそれが今、あなたはそれが何をしたいんだと思う0

Sub deleting_empty_rows() 

Dim rng, rrng, rcell As Range 
Dim i, j As Long 

Set rng = Range("A1:E1") 
Set rng = Range(rng, rng.End(xlDown)) 

For j = rng.Rows.Count To 1 Step -1 

    Set rrng = rng.Rows(j) 

    i = 0 

    For Each rcell In rrng.Cells 
     i = i + rcell.Value 
    Next rcell 

    If i = 0 Then rrng.EntireRow.Delete 

Next j 

End Sub 
関連する問題