Excel VBA特定文字以外の行削除

このQ&Aのポイント
  • エクセルVBAで特定の文字を含まない行を削除する方法を知りたいです。
  • 先日投稿させていただいた質問に対して、成功したマクロをいただきましたが、inputbox以外の方法で特定の文字以外の行を削除する方法を教えていただきたいです。
  • 特定の文字列を入力せずに、VBAマクロの中に直接文字列を記入して、その文字列以外の行を削除する方法を教えてください。
回答を見る
  • ベストアンサー

エクセルVBA 特定文字以外の行削除

こんにちは。 先日以下のURLで質問させて頂きました者です。 http://okwave.jp/qa/q8567085.html そこで、教えて頂いたマクロは成功したのですが、 inputboxではない方法を知りたいです。 ---前回頂きました回答を引用しております------------------------------ retu = "D" word = InputBox(retu & "列に指定した文字が含まれていない行を削除します。" _ & vbCrLf & "検索する文字を入力してください。") For i = Range("D" & "65536").End(xlUp).Row To 2 Step -1 If InStr(1, Range(retu & i).Value, word) = 0 Then Rows(i).Delete End If Next i ------------------------------------------------------------------ この文の文字を入力せずに、 マクロの中に特定の文字を記入して、その文字列以外の行を削除したいです。 ご教授頂けたらと思います。 宜しくお願い致します。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! ごく簡単に Sub Sample1() Dim i As Long For i = Cells(Rows.Count, "D").End(xlUp).Row To 2 Step -1 If InStr(Cells(i, "D"), "検索したい文字") = 0 Then Rows(i).Delete End If Next i End Sub こんな感じではどうでしょうか? ※ 「検索したい文字」そのものだけではなく、 「検索したい文字」が「含まれている」場合も適応されます。 「検索したい文字」そのものの場合は >If InStr(Cells(i, "D"), "検索したい文字") = 0 Then の行を >If Cells(i, "D") <> "検索したい文字" Then に変更してください。m(_ _)m

eco2012
質問者

お礼

こんにちは。早速のご回答ありがとうございます。 うまくいきました!まさにこれです!! 検索したい文字そのものの場合もありがとうございます。 今後、活用したいと思います^^

関連するQ&A

  • エクセルマクロ 複数特定文字を含む行以外の削除

    M列にある特定の文字が含む行以外のものを削除するマクロを教えて下さい。 現在ネット検索で見つかったマクロを使用しています 【現在使用中のマクロ】 Sub Sample1() Dim i As Long For i = Cells(Rows.Count, "M").End(xlUp).Row To 2 Step -1 If InStr(Cells(i, "M"), "検索したい文字") = 0 Then Rows(i).Delete End If Next i End Sub これだと検索したい文字が1つしか利用できません。 「検索したい文字列1」または「検索したい文字列2」を含まない行を削除したいのですが どのようにマクロを組めばよいのでしょうか? こちらまったくの初心者です。 上記の書式にはこだわりませんので、わかる方教えて下さい。

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

    マクロについて教えてください。 以下のなかから、りんごを含んでいる行のみ削除したいのです。 できれば、inputboxで削除したい文字列を入力するようにしたいです。 1|りんご|30 2|みかん|50 3|りんご|30 4|すいか|30 5|みかん|50 いろいろ調べましたがわかりません。。お願いします。

  • エクセルマクロ 特定の文字列を含む行のみを残す (マクロ修正)

    以下のマクロは、EXCEL2003で 「特定の文字列が含まれている列を削除する」動作をするマクロです Sub Macro1() Const col As String = "A" '文字列が入力されている列 Dim idx As Long Dim keyWord keyWord = Application.InputBox("削除対象の文字列は?", Type:=2) If TypeName(keyWord) <> "Boolean" And Len(keyWord) > 0 Then   For idx = Cells(65536, col).End(xlUp).Row To 1 Step -1     If InStr(Cells(idx, col).Value, keyWord) > 0 Then '    If Application.CountIf(Rows(idx), "*" & keyWord & "*") > 0 Then       Rows(idx).Delete     End If   Next idx End If End Sub このマクロを、 「特定の文字列が含まれている行のみを残し、それ以外を削除する」 というマクロに変更したいと思っています。 是非ご回答お願いいたします。

  • 特定の文字を含まないセルの行を削除するには

    いつもお世話になっております。 特定の文字列(下記では"0610")を含まないセルの行を削除するプログラムを組むにはどのようにしたどのようにしたらよいのでしょうか。 以下のようなプログラムを組んでみました。 Sub test() Dim i As Long With Range("C1") For i = .CurrentRegion.Rows.Count To 1 Step -1 If .Offset(i, 0) <> "0610*" Then .Offset(i,0).EntireRow.Delete Next i End With End Sub しかしこれでは先頭行を残し全ての行が削除されてしまいます。 IF文の"<>"がうまくないのだと思いますが、Like演算子の反対のようなものはありませんでしょうか。ご教授いただければ幸いです。 *ちなみに上のプログラムは'06年10月以外のデータは削除するために作ったものです。

  • 重複行を完全削除するエクセルのマクロ

    Sub sakujyo() Dim i, ii As Long For i = 1 To Range("a65336").End(xlUp).Row For ii = Range("a65336").End(xlUp).Row To i + 1 Step -1 If Cells(i, 4).Value = Cells(ii, 4).Value _ And Cells(i, 13).Value = Cells(ii, 13).Value Then Delete Shift:=xlUp End If Next ii Next i End Sub マクロに関しては、素人でございます。 こちらのマクロを作ってみたのですがうまくいきません。 4列目と13列目の列が重複したときのみ重複した行をすべて削除させたいと思っております。どうぞお教えください。

  • 指定した文字列が含まれる行を削除する

    データの照合をしています。 指定した文字列が、「O列」に入っていたら、その行を削除し、 行をつめる というようなマクロを組みたいのですが、エラーがかかってしまいます。 (下のVBは、ネットで公開されていたのを使用させていただいております。) Sub Macro1() Const col As String = "A" '文字列が入力されている列 Dim idx As Long Dim keyWord keyWord = Application.InputBox("削除対象の文字列は?", Type:=2) If TypeName(keyWord) <> "Boolean" And Len(keyWord) > 0 Then   For idx = Cells(65536, col).End(xlUp).Row To 1 Step -1     If InStr(Cells(idx, col).Value, keyWord) > 0 Then '    If Application.CountIf(Rows(idx), "*" & keyWord & "*") > 0 Then       Rows(idx).Delete     End If   Next idx End If End Sub 「下から3行目のNEXTに対応するforがない」とエラーがでます。 ご教授、お願いいたします。

  • エクセルマクロで特定の条件を満たすセルの関数を消す

    A1~D10000の範囲で値が入力されています。 F1~F10000に、それぞれの行の値が必要なのかの判定を関数で表示させています。 F列に「×」と表示されている行のA~D列の値をクリアさせるマクロを 作成したいです。 ネットで調べた所、「行を削除」というテンプレはあったのですが、 それだとF列の関数も消してしまうので、それは避けたいです。 最悪、行の削除をした後に関数をF列にコピペするマクロを 追加すれば良いと思いますが、下記マクロまで作ったのですが、 うまく動いてくれません。 分かる方がいましたら、返信頂きたいです。 Dim i As Long For i = Range("A1").End(xlDown).Row To 2 Step -1 With Cells(i, "F") If _ .Value Like "×" Then .EntireRow.Delete End If End With Next i End Sub

  • 特定の文字を除くVBA

    特定の文字を除くためのVBAについて質問させてください。 あるマクロを実行したときに、インプットボックスを表示させ、 特定の文字や数字を入力します。そして、H列に入力した文字や数字を含まない行にある処理を行いたいと思います。 以下のようにVBAを入力してみたのですが、インプットボックスに入力した文字をうまく除外してくれません。一体どういった書き方が正しいのでしょうか~?! ご教授いただけるととても助かります! よろしくお願いいたします。 message = InputBox("文字を入力して下さい") If Not Cells(行, H).Value Like "*" & message & "*" Then 処理

  • エクセルVBAで行削除時にエラーが発生します。

    こんにちは。 エクセル2002を使用しています。 VBAで、開始行を入力させ開始行+38行を削除するような マクロを作りました。 Sub 削除() Dim Sline As Integer, Eline As Integer Dim S As String '開始行の入力 Sline = Application.InputBox(prompt:="削除開始  行を入力して下さい。",Type:=1) '開始行が入力された場合 If Sline <> False Then '開始行のチェック '終了削除行のセット Eline = Sline + 37 '削除確認メッセージ S = MsgBox(Sline & "~" & Eline & _ "行を削除します。", _ vbOKCancel + vbExclamation, _ "行削除確認") If S = vbOK Then Rows(Sline & ":" & Eline).Select Selection.Delete Shift:=xlUp End If End If End Sub これを実行すると Selection.Delete Shift:=xlUp のところで、 実行時エラー 1004 RangeクラスのDeleteメソッドが失敗しました。 でとまってしまいます。 どなたか対応策を教えてください。 よろしくおねがいいたします。

  • エクセル 空の行を削除するマクロについて

    エクセルで、特定の列(ここではFの列としてください)が空欄だった場合に、その行ごと削除するマクロを記述したのですが、不完全で困っています。 不完全な部分としては、 ・Fが空であるはずなのに、行が削除されない ・Fが空でもその隣のセル(E)に文字列などが入っていた場合、削除されない 以下が問題のマクロです Dim i As Integer For i = 1 To 300 If Sheets("Sheet1").Cells(i, "F") = "" Then Sheets("Sheet1").Rows(i).Select Selection.Delete Shift:=xlUp End If Next i End Sub 例) A B C D E F 1 あ い う え お か 2 き く け こ さ し 3 す せ そ た ち 4 つ て と な に ぬ 3列目を削除したいです。 問題箇所がお分かりの方、教えていただけませんでしょうか。 宜しくお願いいたします。

専門家に質問してみよう