• ベストアンサー

excel VBA フィルタでソートして行を削除する

質問させていただきたいのですが、 フィルタでソートして、その結果について、行ごと全体を削除したい考えています。 データは10,000行程はあります。 フィルタでタイトル行は12行目、 ソートした結果は、14行目やその他ソート条件によって様々な行から表示されます。 タイトルは残して、ソートした結果の行を全て削除したい場合、どのようにすればいいのか教えていただきたく存じます。 初心者の質問で申し訳ございませんが、宜しくお願い致します。

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

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.5

> フィルタでソートして削除しょうとしていたのがA列が空欄行のものをソートして空欄行を削除するでした。 最初からそう書いてください。 Sub test01() On Error Resume Next Range("A13:A" & Rows.Count).SpecialCells(xlCellTypeVisible).EntireRow.Delete On Error GoTo 0 End Sub

eb1976jp
質問者

お礼

出来ました。 文章が足りなくてすいませんでした。 大変助かりました。ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • turuzou
  • ベストアンサー率33% (15/45)
回答No.6

蛇足ですが、お時間のあるときに御覧になると ご自分で解決できるかもしれません。 エクセル技道場>マクロ http://www2.odn.ne.jp/excel/waza/macro.html の 特定列が未入力の場合その行を削除 http://www2.odn.ne.jp/excel/waza/macro.html#SEC5 空白行を行削除 http://www2.odn.ne.jp/excel/waza/macro.html#SEC4 すぐに役立つエクセルVBAマクロ集 - Excel VBA Macro Collection http://www.asahi-net.or.jp/~zn3y-ngi/

eb1976jp
質問者

お礼

お礼が遅くなり大変申しわけございません。 参考になりました。ありがとうございました。

すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.4

> A12より下にデータはあるのですが、最下行まではびっしりない状態です。 x = Range("A" & Rows.Count).End(xlUp).Row これはA列最下行(エクセル2003までなら65536行)から上に向かっていって最下行が空白であれば最初にデータがあるセルの行、最下行にもデータがあれば連続する一番上のデータ入力行を取得する式です。最下行が空白でxが12なら、A13から下にデータはありえません。 ひょっとして式を変えましたか?

eb1976jp
質問者

お礼

出来ました!!! 大変申し訳ないのですが、一点、書き忘れていました。 まず、最初にフィルタでソートして削除しょうとしていたのがA列が空欄行のものをソートして空欄行を削除するでした。 その為に空欄行が認識されませんでした。 空欄行以外のものでやったら出来ました。 すいません。ありがとうございます。 あと一点すいませんがフィルタでソートして空白行の削除はどのようにやればいいのでしょうか? 教えて下さいばかりですいませんが宜しくお願い致します。

すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

> 上記のコードをやると、Xが12になり ということはA列にはA12セルより下には何もデータがないということになります。(あるいは最下行からA12までびっしりデータが入ってる?まさか) わたしは「仮にデータのある列がA列の場合、」という前提で書いたのですがいかがでしょうか?

eb1976jp
質問者

お礼

A12より下にデータはあるのですが、最下行まではびっしりない状態です。 私のやり方が悪いのかもしれません。 もう少し、試してみます。 ありがとうございます。

すると、全ての回答が全文表示されます。
  • turuzou
  • ベストアンサー率33% (15/45)
回答No.2

下記も参考になりそうです。 行の削除 http://www2.odn.ne.jp/excel/waza/macro.html#SEC6

eb1976jp
質問者

お礼

ありがとうございます。 参考にさせていただきます。

すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

タイトル行は12行目ということは13行目からがデータなんですね? 仮にデータのある列がA列の場合、ソート後に以下を走らせれば出来ると思います。 Sub test01() x = Range("A" & Rows.Count).End(xlUp).Row On Error Resume Next Range("A13:A" & x).SpecialCells(xlCellTypeVisible).EntireRow.Delete On Error GoTo 0 End Sub

eb1976jp
質問者

お礼

回答ありがとうございます。 やってみましたが出来ませんでした。 私のやり方、もしくは質問の仕方が悪いのかもしれません。 現在はソートまでしてある状態です。 13行からデータですが、ソートした結果14行目がデータの先頭行としてソートされています。 上記のコードをやると、Xが12になり、12行目のタイトル行のみが削除されてしまうようです。 私のやり方が悪いのでしょうか? ご教示いただけますと大変嬉しいです。 宜しくお願い致します。

すると、全ての回答が全文表示されます。

関連するQ&A