• 締切済み

EXCELで文字検索したセルの行と前後の行の削除の方法

EXCEL-VBAを使ってワークシートのデータ整形をしています。 ある文字列を検索し、その文字列を含む行とその前後の行を削除するロジックを記述したいのですがうまくできません。 例:検索文字列「合計」、"合計"の入っているセル「B120」のとき、B119~B121の3行分の行削除をしたい。 おそらく検索された文字列を含むセルの行番号を取得してその番号-1と+1の行を選択して削除すればよいのではないかと思ってるのですが、もっと良い方法があるのでしょうか? よろしくお願いします。

みんなの回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

マクロを書いてみました。 検索する文字を入力します。シートの中であるだけ削除してしまいます。 削除する行が2行以上離れている保証があれば簡単なのですが、連続して削除対象、1行飛んで削除対象も考慮するのに考え込んでしまいました。解決方法として、最初に削除するセルに『削除する行です』と書き込んで、後から『削除する行です』と書いた行を削除しています。(多分うまくいくと思います) 削除なので、コピーを取って実行して下さい。(保存しなければいい?) 標準モジュールに貼り付けます。 Public Sub Kensaku_Delete2()   Dim sch_Moji As String '検索する文字   Dim sch_rg As Range '検索したセル   Dim sch_RowNo As Long '検索したセルの行番号   sch_Moji = InputBox("検索する文字を入力して下さい。")     If sch_Moji = "" Then       Exit Sub     End If   Application.ScreenUpdating = False   '削除する行に印を付ける   Range("A1").Select   Set sch_rg = Cells.Find(sch_Moji)   While Not (sch_rg Is Nothing)     If sch_rg.Row <> 1 Then       sch_rg.Offset(-1, 0) = "削除する行です" '前の行に印をつける     End If     sch_rg.Offset(1, 1) = "削除する行です" '次の行に印をつける(1つ右)     sch_rg.Offset(0, 0) = "削除する行です" '探した行に印をつける     Set sch_rg = Cells.FindNext(ActiveCell)   Wend   '印を付けた行を削除する   Range("A1").Select   Set sch_rg = Cells.Find("削除する行です")   While Not (sch_rg Is Nothing)     Rows(sch_rg.Row).Delete     Range("A1").Select     Set sch_rg = Cells.FindNext(ActiveCell)   Wend   Application.ScreenUpdating = True End Sub

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

関連するQ&A

  • VBA 任意の文字があるセルの行を削除したい

    エクセルVBAで、次のような作業をしたいのですが、記述がわかりません。 A200~A500のセルに任意の文字(たとえば「A」)が表示(一致)されていたら そのセルの行を削除する。 範囲は一定です。 よろしくお願いします。 WIndows7SP3/Excel2013

  • VBAマクロ・・同一セルの検索と検索したセルの操作

    VBAマクロ・・同一セルの検索と検索したセルの操作  VBAのほぼ初心者です。  決められたセル(たとえばE100)に入力された文字列と同一の文字列を その列内の上(E1~E99)で検索する。 そして、検索できれば(たとえばE30)そのセルがある行(行30)を削除する。 なお、複数検索されれば、検索されたすべてのセルに対応する行を削除する。  というようなことをVBAのマクロで作成したいです。 FindメソッドとDo..Loop Whileを使って試行錯誤してみたのですが、うまくいきません。。  いい方法があれば、是非教えていただきたいです。  どうぞよろしくお願いいたします。

  • エクセル 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になる等)最高です。 詳しい方教えてください。よろしくお願いします。

  • エクセル セルの複数削除がしたい。

    使用しているオフィスは、WORD2003になります。 例えばセルの 1行目のB列~G列まで 2行目のB列~G列まで のそれぞれのセルに文字が入っているとします。 1行目の文字を一括で消したい場合、 1行目のB列~G列までのセルをマウスで選択して、 バックスペースやデリートキー(以下:削除キー)を押せば、 通常一行目のB列~G列に入っている文字は、通常全て削除されると思います。 所が、設定を変更した覚えはないのですが、 セルをB列~G列まで選択して削除キーを押した時、 選択されている状態のまま、文字は削除されず、B列のみが直接入力?する形になってしまいます。 多分、オプション設定等で調整する事が出来るものだと思っているのですが、それらしき項目がなくて解らない状態です。 ※行ごと削除したり他にもやり方はあると思いますが、セルを複数選択して、その選択したセルに入力してある文字を、削除したいのです。 上手く伝わっているでしょうか・・・ ご存じの方がいれば教えて頂けないでしょうか。 よろしくお願いします。

  • excel2010の空白セルのある行の削除方法

    Excel2010を使っております。 2列以上の多数の行からなるデータに、空白のセルがあちこちに散在している状態で、 ”検索と選択"→"ジャンプ"→"セル選択"で空白セルを指定して、行のみ削除をすると、いずれかの列が空白である行がOR条件で削除されてしまいます。 全部の列が空白(AND条件)の行のみを削除する方法を教えてください。(画像を添付いたします) 宜しくお願いいたします。

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

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

  • VBA 行の削除

    全くの初心者で、初めて質問させていただきます。 A列には、数字・空白・文字を入力したセルが混在しています。 そのA列の数字の内 0 のセルが入力されている行のみを削除するVBAの記述の仕方を教えて下さい。 宜しく御願い致します。

  • Excelで、文字列を含むセルの検索をしたい

    Excelで、文字列を含むセルの検索をしたいと思います。 列Aには、探したい文字列(市町村名)が800行入っています。 (1行目)○○市 (2行目)△△町 (3行目)□□□村 ・・・以下続く・・・ 列Bには、検索対象となる文字列(住所)が7000行入っています。 (1行目)XX県XX市XX-XX-XX (2行目)XX県○○市XXXXXX-XXX-X (3行目)XX府XXX郡□□□村XXX ・・・以下続く・・・ このとき、 「列Aにある文字列(市町村名)を含む列B(住所)のセル」を検索したいのです。 (上記の例の場合は2行目・3行目がヒット。) シートや列は追加してかまいません。 件数が多いため、どのように探すと効率的か見当がつきません。どなたかよい知恵をお貸しください。よろしくお願いします!

  • 【VBA】該当する文字列がある列を削除したい。

    指定した文字列を検索して、そのセルのある列削除したいです。 例えば2行目に、表の項目として「社名、フリガナ、住所、電話番号、備考、・・・」 と、あるときに、フリガナと電話番号の列を削除させたいのです。 シートによって項目の位置が若干変わる為、列番号を指定して削除するようなことは出来ません。 項目の名前が変わることはありません。 vbaでどのようにすればよいのでしょうか。 また、2行目の範囲で文字列を検索して、該当する文字列があるセルの位置情報を 取得したい場合はどうすれば良いでしょうか? 宜しくお願いします。

  • 複数セルから文字列を検索して・・・

    どう検索していいのかわからなかったので質問します。 複数のセルから特定の文字列を検索して、該当したセルに対応するB列の数字の合計を関数によって出したいです。 例えば画像を例にすると、A列で"()"という文字列が入っているセルがいくつかあります。 これらのセルに対応するB列の数字の合計を出したいです。 "()"は必ず文字列の末尾にくることとします。 回答よろしくお願いします。

このQ&Aのポイント
  • 2021年のお盆の入りは8月13日(金)です。一軒家の庭にはそろそろ雑草が部分的に生え、昨年使用した5Lのグリホサート系の除草剤の半分を残してあり、それを希釈してジョウロで撒くタイミングを考えています。
  • 梅雨明けは平年だと7月末です。面積は3坪ぐらいです。8月の初旬に散布しておけば、丁度お盆頃に枯れますか?
  • 散布するタイミングを教えて下さい。
回答を見る

専門家に質問してみよう