|
▼列行 さん:
私も、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
|
|