- ベストアンサー
ExcelVBA特定の列にデータがある行を消したい
Excel2003を使っているのですが、VBAを使って特定の列(たとえば、I列)にデータがある(空白でない)行をすべて消したいのですが、どのようなマクロを書けばできるでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Sub Macro1() For i = Cells(Rows.Count, 1).End(xlUp).Row To 3 Step -1 '(1) If Range("I" & i) <> "" Then Rows(i).Delete '(2) 行を削除 Rows(i).ClearContents '(3) 行の内容をクリアするだけ End If Next i End Sub (1) Toの後の3をデータの始まる行番号に直して (2)、(3)は行いたい処理の方を残して下さい。
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
>たとえば、I列)にデータがある(空白でない)行をすべて消したい I列に「生データの有無」で判断して良いなら sub Sample1() range("I:I").specialcells(xlcelltypeconstants).entirerow.delete end sub みたいな具合でも。 実は生データを入れてるんじゃなくて数式の計算結果で仕分けたかった場合は,オートフィルタをI列に取り付けて絞り込んで削除する,といったマクロでも良いです。 また表にタイトル行があってその行は(空白じゃないけど)消したくない,とかそういった追加の細工が必要な場合もあるかもしれませんので,適宜応用して活用してください。
お礼
ご回答ありがとうございました。 オートフィルタを利用した方法を想定しておりましたが、No2の方がすばらしいマクロを教えてくださいましたので、こちらで行こうと思います。
- fujiponxx
- ベストアンサー率32% (186/580)
マクロ記録では以下のようになります。 Columns("I:I").Select Selection.ClearContents
補足
説明の仕方が悪く、意図したものとは異なりました。 ご回答ありがとうございました。
お礼
ご回答ありがとうございました。 想定通りの回答で大変助かりました。