|    | 
     ▼列行 さん: 
 
私も、kanabunさん同様フィルター処理がいいんじゃないかと思ったんですが・・・ 
別案です。 
行や列の削除、挿入といった処理は処理コストが結構大きくなりますので 
不要なものを下においやってクリアします。 
 
Sub Sample() 
  Dim myA As Range 
  Dim myW As Range 
   
  With Worksheets("Sheet1") '<== 実際のシート名に 
   
    Set myA = .UsedRange 
    Set myW = myA.Columns(1).Resize(myA.Rows.Count - 1).Offset(1, myA.Columns.Count) 
   
    myW.Formula = "=IF(OR(D1=""ABC"",G1=0,P1=""""),1,0)" 
    myW.Value = myW.Value 
    myW.Offset(-1).Cells(1).Value = "Dummy" 
    If WorksheetFunction.CountIf(myW, 1) > 0 Then 
     
      .Cells.Sort Key1:=.Columns(myW.Column), Order1:=xlAscending, _ 
        Header:=xlYes, OrderCustom:=1, MatchCase:=False, _ 
        Orientation:=xlTopToBottom, _ 
        SortMethod:=xlPinYin, DataOption1:=xlSortNormal 
   
      .Range(myW.Cells(WorksheetFunction.Match(1, myW, 0)), _ 
              myW.Cells(myW.Cells.Count)).EntireRow.ClearContents 
       
    End If 
     
  End With 
 
  myW.EntireColumn.ClearContents 
   
  Set myA = Nothing 
  Set myW = Nothing 
   
End Sub 
 | 
     
    
   |