- ベストアンサー
困っています!マクロオートフィルタでの行削除について
- マクロオートフィルタで条件をフィルタして行を削除する方法について困っています。
- 特に、2列目の条件が表にない場合に2行目から下が全て削除されてしまいます。
- 抽出する条件が毎週変わるため、他の抽出方法も分かりません。どのようにすればいいでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
標準的には、AutoFilter.Range で、最初のセルと最後のセルを取ります。 削除する方法場合、可視セルだけ削除されるはずです。うまくない場合は、SpecialCells を使います。Excelのバージョンによって、可視セルを区別出来ないものがあるそうですから。 Sub TestMacro1() With Range("A1").CurrentRegion .AutoFilter Field:=1, Criteria1:="A" .AutoFilter Field:=2, Criteria1:="B" With ActiveSheet.AutoFilter.Range .Cells(2, 1).Select If WorksheetFunction.Subtotal(3, .Columns(1)) > 1 Then Range(.Cells(2, 1), .Cells(.Count)).EntireRow.Delete End If End With ActiveSheet.AutoFilterMode = False End With End Sub
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! オートフィルタではないので、参考にならなかったら無視してください。 A列が「A」でなおかつ B列が「B」 のデータの行を削除するようにしてみました。 一例です。 Sub test() Dim i As Long For i = Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 If Cells(i, 1) = "A" And Cells(i, 2) = "B" Then Rows(i).Delete (xlUp) End If Next i End Sub この程度しか思いつきませんが 他に良いコードがあれば読み流してくださいね。m(__)m
お礼
返事が送れて申し訳ありません、回答ありがとうございます。 オートフィルタではない方法ですと、このようなやり方もあるのですね、大変参考になりました。 ただ、今回の場合は他の作業をオートフィルタで行っていますので、オートフィルタで出来るのであれば、そちらで作業をまとめてしまうことにしました。 それが良い作業なのかどうかは分かりませんが(^^;; コードの意味も何とか理解できたと思いますので、今後のマクロ作成に活かしていきたいと思います。 改めて、ありがとうございましたm(__)m
お礼
返事が送れて申し訳ありません、回答ありがとうございます。 最初のセルと最後のセルを取る基本的な作業があるのですね、そのことからして知りませんでした(^^;; 基礎が大事だとは分かっているのですが、時間などの関係からまず動くことを優先しがちです……やはりちゃんと勉強しないとだめですね。 Wendy02さんのマクロを利用したところ、やりたかったこと通りの作業が出来ました。 改めて、ありがとうございましたm(__)m