• ベストアンサー

Excel VBA A列が特定の値以外の場合、その行を削除

教えてください。 A列の値が特定の値以外の場合、 その行を行ごと削除する方法はありますでしょうか? A列には、 1 タイトル 2 (ブランク) 3 a 4 a 5 b 6 b 7 c 8 c 9 d 10 d ~というふうに2000行辺りまで続きます 例えば、A列の3行目以降の値が b 以外の場合、 3・4・7・8・9・10行を行ごと削除する、ということです。 あまり説明が上手でなくて申し訳ありませんが、よろしくお願いします。

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

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

ではVBAのサンプルです。コメントも入れておきました。 Sub test01() With ActiveSheet 'アクティブなシートについて x = .UsedRange.Cells(.UsedRange.Count).Row 'xに最終行を取得 For i = x To 3 Step -1 '最終行から3行目まで下から順に If .Cells(i, 1) <> "b" Then .Rows(i).Delete 'A列が"b"でなかったら削除 Next '繰り返し End With End Sub

motsu2006
質問者

お礼

サンプル、ありがとうございました。 今回はこれを流用し、 さらに次回以降には応用してVBAを勉強して行こうと思います。

その他の回答 (3)

  • kuroamru
  • ベストアンサー率26% (7/26)
回答No.4

マクロの組み方の基本はOKですか? 『指定文字列』以外であった場合のみ『削除』ということですよね? 順を追います。 1.A列の文字列を見る(上記の場合スタートは3行目から) 2.指定文字列以外『この場合"b"』であった場合削除 3.1、2を行数分ループする この手順で組んで見てください。 分かりづらいかな^^;

motsu2006
質問者

お礼

基本は理解しているつもりですが、 できること・できないことの判断、及び基本の応用にいつも難儀しています。 再度のご回答、ありがとうございました。

  • fly_moon
  • ベストアンサー率20% (213/1046)
回答No.2

VBAでやる必要がないように思えます。 オートフィルタでA列をb以外の条件で選んだ物を削除するとか、逆にbのものを表示させてその分だけコピペで新しくシートを作るとか。 VBAでやらなければならない理由は何ですか?

motsu2006
質問者

補足

すみません、言葉足らずでしたね。 #1さんの推測されている通り、 ボタンを押すかマクロ一覧から処理を起動し他の多くの処理の一部として行を削除する必要が生じています。

  • kuroamru
  • ベストアンサー率26% (7/26)
回答No.1

イメージ的には、エクセルシート上にボタンか何かを貼り付け、それを押下すると処理が走り、編集されるというイメージでよろしいでしょうか? それであれば、下記URLを参考に自作マクロを活用してください。 マクロは覚えておくと色々と応用が利きますよ^^

参考URL:
http://www2.odn.ne.jp/excel/waza/macro.html
motsu2006
質問者

補足

ご回答、ありがとうございます。 教えていただいたページに、 "A列に2が入力されていたらその行を削除(列見出しを除く)"というのがありました。 私はマクロ初心者なもので、 □2(マクロ内では変数を使用予定)以外の行を削除 ※列見出しは2行です という応用がわかりません。 どのようにすればよろしいでしょうか?