• ベストアンサー

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行です という応用がわかりません。 どのようにすればよろしいでしょうか?

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

関連するQ&A

  • エクセル VBAにて行削除をしたい…

    エクセル2003にて VBA初心者です。 A列1~100に101~200までに番号が振ってあります。 Z列に記入がない場合はその行を削除するVBAを教えてください。 例  A  B  C  D  E  F …… Z 1  101               文字有り 2  102               ブランク 3  103               ブランク 4  104               文字有り 5  105               文字有り … 99  199              文字有り 100  200              ブランク この様な場合2,3,100の行ごと削除をするという形式のものです。 また、この場合A列の番号も自動で変われば(104が102になる等)最高です。 詳しい方教えてください。よろしくお願いします。

  • エクセルVBAで特定の文字を含まない行を削除する

    エクセルVBAで特定の文字列(たとえば” りんご ”)を含まない行を削除するものを作成したいです。 ” りんご ”がB列だけにしかない場合は作成できたのですが、 ” りんご ”がB列とC列にも含まれていて どちらかに含まれていたら、その行を残して、それ以外の行を削除したい場合にはどうしたらいいのかわかりませんでした。 教えてください。 

  • エクセル A1の値と同じ値の入ったB列のC列の計

    A1=10 D1=37 B C 10 15 11 10 10 12 12 1 10 10 A1と同じ値をB列から探し其の行のC列の値の合計をD1に表示したいのです ご教授ください

  • エクセルマクロ 特定の文字列を含む行を削除

    エクセルマクロ 特定の文字列を含む行を削除 エクセルのマクロについて教えてください。 下の中から列を限定せず、すべての行でAAA、CCCのいずれかがある場合、 その行ごと、すべて削除したいのです。 時に削除したい特定の文字列が数十種類になるため、 マクロ起動時に削除したい特定の文字を記述したファイルを読み込み、それから 削除できるようにしたいのです。場合によってはそのファイルを編集し、 削除したい文字列を変更したいのです。 ご教示いただだけないでしょうか A列 B列 C列 1 AAA BBB CCC 2 BBB CCC FFF 3 DDD BBB FFF 4 AAA CCC DDD 5 GGG RRR UUU 行中にAAA、BBBがある場合、削除したい ↓ A列 B列 C列 5 GGG RRR UUU マクロを実行し、上記の結果にしたい。

  • エクセル2003 特定の列の値がTRUEの抽出

    エクセル2003を使用しています。 特定の列の値がtrueの行の特定の列の値のみ抽出したいです。 具体的には、B列に「TRUE」が入っている行のC列の値のみを羅列することができませんでしょうか。 添付した画像のようなエクセルを作成しており、 添付画像の中の2~6行の中から、10行以降のような形に出力させたいです。 お分かりになる方おられましたら、教えてください。

  • (Excel2002)特定の文字列が含まれる列に対して値を返したい

    (わかりにくいタイトルですいません) こんにちは。熟練の皆様にお伺いします。 次のような場合の計算式が思いつきません…ぜひお力をお貸し下さい! ある文字列(A行)の中から特定の文字列(D行のいずれか)を探し、 それが含まれた場合、B行にE行の値を返す、というものです。 以下のような場合、    A        B     C     D     E 1  いろはにほ              はにほ  ◇ 2  いろは                 るを    ◆ 3  ちりぬるを  4  ちり     5  はにほちり  6  わかよ     ↓こういう結果にしたいんです    A        B     C     D     E 1  いろはにほ  ◇           はにほ  ◇ 2  いろは                 るを    ◆ 3  ちりぬるを   ◆ 4  ちり     5  はにほちり   ◇ 6  わかよ    いかがなものでしょうか…

  • 【Excel】複数ある特定の値を検査値として、同一行の特定列の値を返す方法を教えてください

    はじめまして。 表現の仕方がわからなかったのですが、 複数ある特定の値を検査値として、同一行の特定列の値を返す方法 わかる方いらっしゃいましたら教えてくださいm(__)m 例えば・・・ 【シート1】      【シート2】   A  B C D        A B C 1 あ 月 ア 一     1 う エ   2 う 火 エ 二     2 え イ 3 い 木 ウ 三     3 4 え 火 イ 四     4 とあった場合、 【シート1】のB列の”火”を検査値として ”火”のある2行目と4行目のA列C列の値のみを 【シート2】の特定のセルに表示させる方法を教えてください。 よろしくお願いします。

  • EXCEL VBA 行の値を累計したいのですが・・

    VBA初心者です。 VBAでEXCELの行の値を累計したいのですが、プログラムの仕方がわかりません。 どなたかわかる方教えてください。     A    B   C    D   E ・・・・ 1  1000 3000 2000 4000 3000  2  2000 5000 1000 3000 2000  3  4000 2000 3000 1000 5000   :     実行結果     A    B    C    D    E  ・・・・ 1  1000 4000 6000 10000 13000 2  2000 7000 8000 11000 13000   ←行の値の累計 3  4000 6000 9000 10000 15000 : 行と列はたくさんあって、最後のセルまで累計する方法を教えていただけるとありがたいです。 どうぞよろしくお願いします。m(_ _)m

  • ExcelのVBAで複数行削除を行う場合

    Excel2007のVBAで複数行を削除する方法を教えて下さい。 Excel2003で使用していたマクロが使えなくなってしまいました・・・。 下記のようなExcelシートに対して複数行ずつ行を削除し、削除対象が無くなるまで 削除処理を行うか、指定した行まで削除処理を行うという事をしたいのですが うまく動きません。 例      A列   B列   C列   D列   E列 1行目 aaa1   bbb1  ccc1 2行目             ccc2 3行目             ccc3 4行目             ccc4 5行目 aaa2   bbb2  ccc1 6行目             ccc2 7行目             ccc3 8行目             ccc4 例に対しての結果      A列   B列   C列   D列   E列 1行目 aaa1   bbb1  ccc4 2行目 aaa2   bbb2  ccc4 例に対して、複数行(指定した行数ここでは3行)の削除を行いたいのですが、 単純に複数行(3行)ずつ削除していくのではなく。 1行目や5行目にあるように文字や情報が入力されているA列とB列の情報は 残しつつ、4行目のC列以降の列の情報はすべて活かしていくという事をしたいのです。 Excel2003の時に使用していたVBAは以下のものです。 Sub 行を削除するマクロ() Workbooks("xxxx.xlsx").Activate '処理を行いたいExcel ※1 n = n + 0 LastRow = 2138           '処理を終了させたい行 ※2 Sheets("Sheet1").Select '処理を行いたいシート ※3 Do Until (n > LastRow) Rows(n + 4).Delete Shift:=xlsiftUp '削除したい行指定 ※4 n = n + 3 Loop End Sub 皆様の良いアドバイスやお知恵をお貸しください。 よろしくお願いします。

  • Excelにて複数条件を満たす行の特定のセルの値を返す関数

    Excelにて複数条件を満たす行の特定のセルの値を返す関数を作りたいのですが、上手く行きません。 <Sheet1>   A列  B列  C列 1 2008/6/1 ★  320 2 2008/6/1 ☆  300 : : : Sheet2のA1に、「A列が2008/6/1で、B列が☆の場合、C列の値を返す」という関数を入れたいのですが、どうも上手く行きません。 良い式がありましたら教えて下さいm(_ _)m

プロダクトキーがわからない
このQ&Aのポイント
  • 「プロダクトキーがわからない」という問題について解決策を探しています。富士通FMVのプロダクトキーの表示方法について教えてください。
  • 富士通FMVのプロダクトキーが表示されない問題が発生しています。プロダクトキーの表示方法や確認するための手順を教えてください。
  • プロダクトキーが確認できないという問題があります。富士通FMVのプロダクトキー表示について詳細を教えていただけますか。
回答を見る

専門家に質問してみよう