2016-12-21 3 views
0

私は1枚のシートを含むExcelファイルを持っているを含むとされ、このデータ行を削除:C AND Dの値が0の場合2列は、特定のデータ

 A |  B  |  C |  D 
________________________________________________ 
    321  2016/12/01 0   0 
    123  2016/12/03 23   0 
    1321  2016/12/05 12   1 
    2315  2015/12/03 0   0 
    23154  2015/12/03 0   0 

は、私はすべての行を削除するかをどのように私はすることができますこれを達成するには?

+0

[セル値に基づいて行を削除する方法](http://stackoverflow.com/questions/14613609/how-to-delete-row-based-on-cell-value) –

+0

重複している可能性があります。しかし、私のケースでは、行を削除する条件になることができる2つの列があります –

+0

あなたの場合、単なる列ではなく、列CとDの両方を考慮に入れてコードに追加するだけですそれはあなたのコメントであなたが言っていることですか?) –

答えて

1

あなたは、ヘッダー1のように最初の行を持って、その後、これを使用してください動作します:

Sub Main() 
    With Worksheets("mySheetName") 
     With .Range("D1", .Cells(.Rows.Count, 1).End(xlUp)) 
      .AutoFilter field:=3, Criteria1:=0 
      .AutoFilter field:=4, Criteria1:=0 
      If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
     End With 
     .AutoFilterMode = False 
    End With 
End Sub 
+0

With - プロシージャとして外部に許可されていません。 –

+0

'Sub WhateverName()' 'End Sub'ブロックにそのコードをラップする必要があります!編集されたコード – user3598756

+0

も参照してください。実際のワークシート名で "mySheetName"を変更してください... – user3598756

0

値が0であるcolsのC及びDにフィルタを適用し、表示された行を削除します。

1

は考えてみましょう:

Sub RowKiller213() 
    Dim i As Long, N As Long 

    N = Cells(Rows.Count, "A").End(xlUp).Row 
    For i = N To 1 Step -1 
     If Cells(i, "C").Value = 0 And Cells(i, "D").Value = 0 Then 
      Cells(i, "C").EntireRow.Delete 
     End If 
    Next i 
End Sub 

注:

  • ループはボトムアップ
+0

ありがとうございました。 "オブジェクト参照が見つかりません" –

関連する問題