• 締切済み

フィルタで抽出された行を全て削除

お世話になります。 プログラムから出力されたレポート(エクセル形式)の不要な行をフィルタで抽出し、削除したいのですがどのようにプロシージャを書けばよろしいのでしょうか? 具体的には 1:[D列]の"空欄"もしくは"---"をで始まるセル 2:[G列]の空欄のセル 3:[H列]のGで始まるセル のいずれかに当てはまる行を全て削除したいのです。出されるレポートの総行数は毎回異なります。 よろしくお願いいたします。

みんなの回答

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

フィルターオプションで一発で出来ないでしょうか。解説はこちら。 http://allabout.co.jp/computer/msexcel/closeup/CU20070905A/ 空白セルにフィルターをかける方法はこちら。 http://www.r-kansai.ricoh.co.jp/jyouhou/naomi/excel/51-100/58.html 抽出行の削除は、一般機能でできますが、マクロ自動記録すると下記の様になります。データの範囲と、抽出条件の範囲は当方のテストデータのものですので、気にしないでください。 Sub test() 'データ/フィルター/フィルターオプション Range("A6:C22").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Range("A1:B2"), Unique:=False '抽出された範囲を選択 Range("A9:C22").Select '編集/ジャンプ/セル選択で可視セル選択 Selection.SpecialCells(xlCellTypeVisible).Select '右クリックで削除/行全体削除を実行 Selection.EntireRow.Delete 'データ/フィルター/すべて表示 ActiveSheet.ShowAllData End Sub

TENSAW
質問者

お礼

mitarashiさん、 ご回答ありがとうございます。 フィルタのかけ方は分かるのですが、抽出した行をVBAでいかに削除するのかを知りたかったのです。説明が不足しておりました、すみませんでした。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

エクセルのVBAでの質問でしょうか? マクロの記録で作成できると思います。 マクロの記録開始 1:[D列]の"空欄"もしくは"---"をで始まるセル をフィルターで抽出 表示された行を(行方向に)選択して、行の削除 フィルターを解除(全てを表示) 2:[G列]の空欄のセル            をフィルターで抽出表示 行を選択、行の削除、フィルターの解除 3:[H列]のGで始まるセル          をフィルターで抽出表示 行を選択、行の削除、フィルターの解除 マクロの記録の終了

TENSAW
質問者

お礼

hallo-2007さん、 早速のご回答ありがとうございます。 はいVBAの質問です。データは毎回違うものが出力されますので、貴殿のやり方で行ってしまうと削除するROWの指定が自動記録をとったものに限定されてしまいますので、その1回限りしか使えないのですよ。 -EX.-  Rows("34:62").Select  Selection.Delete 次回のデータが必ずしも34行目からの削除とは限らない。 しかしながらご協力には感謝いたします。ありがとうございました。

関連するQ&A