• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロ オートフィルタで困っています。)

困っています!マクロオートフィルタでの行削除について

このQ&Aのポイント
  • マクロオートフィルタで条件をフィルタして行を削除する方法について困っています。
  • 特に、2列目の条件が表にない場合に2行目から下が全て削除されてしまいます。
  • 抽出する条件が毎週変わるため、他の抽出方法も分かりません。どのようにすればいいでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

標準的には、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

eoh2
質問者

お礼

返事が送れて申し訳ありません、回答ありがとうございます。 最初のセルと最後のセルを取る基本的な作業があるのですね、そのことからして知りませんでした(^^;; 基礎が大事だとは分かっているのですが、時間などの関係からまず動くことを優先しがちです……やはりちゃんと勉強しないとだめですね。 Wendy02さんのマクロを利用したところ、やりたかったこと通りの作業が出来ました。 改めて、ありがとうございましたm(__)m

その他の回答 (1)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! オートフィルタではないので、参考にならなかったら無視してください。 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

eoh2
質問者

お礼

返事が送れて申し訳ありません、回答ありがとうございます。 オートフィルタではない方法ですと、このようなやり方もあるのですね、大変参考になりました。 ただ、今回の場合は他の作業をオートフィルタで行っていますので、オートフィルタで出来るのであれば、そちらで作業をまとめてしまうことにしました。 それが良い作業なのかどうかは分かりませんが(^^;; コードの意味も何とか理解できたと思いますので、今後のマクロ作成に活かしていきたいと思います。 改めて、ありがとうございましたm(__)m

関連するQ&A