• 締切済み

エクセルについて

ある表より特定の文字が入力されている行を削除したいと考えております。過去を参照し下記のようなマクロを取り入れたいと思いました。 Sub macro1() Dim R As Range Do Set R = ActiveSheet.Range("F:F").Find(What:="削除したい文字列", LookAt:=xlPart) If R Is Nothing Then Exit Sub R.EntireRow.Delete Loop End Sub ここで質問です。F列に削除したい文字列がいくつかある場合上記をどのように改良すればよいでしょうか。ご教示の程よろしくお願い致します。

みんなの回答

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.2

はじめまして 単純にDo~Loopまでを文字列の数だけ作ればOKです。 しかし、スマートではありません。 この場合には、繰り返し命令の「For Each ~ Next」が便利だと思います。 以下は、「For Each ~ Next」の使用例です。 Sub test() Dim a For Each a In Array("A", "B", "C") MsgBox a Next End Sub

igu0625
質問者

お礼

ありがとうございました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_find.html FindNext メソッド  PS. F列にオートフィルタをかけて・・・と言うのでは無理でしたか?

igu0625
質問者

お礼

ありがとうございました。

関連するQ&A

  • 特定文字列を含む行を削除するマクロ

    すみませんどなたか教えてください。 エクセルで商品の在庫管理をしておりまして、AP列に製品メーカー名が入っているのですが、 いくつかの(数十個)メーカーを省き削除したく思い、以下のようなマクロをググって作ってみましたが、 上手く動きませんでした。 1つのメーカーだけ記載した場合はうまく動きました。 やりたいことは1つのマクロの中に、数十個のメーカー名を記入しておき、そのメーカーを全件 検索して、AP列に文字列が含まれる場合は、その行を削除したいです。 宜しくお願い致します。 ~~~~~~ Sub DelLines1() Dim R As Range Do Set R = ActiveSheet.Range("AP:AP").Find(What:="softbank", LookAt:=xlPart) If R Is Nothing Then Exit Sub R.EntireRow.Delete Loop Sub DelLines2() Dim R As Range Do Set R = ActiveSheet.Range("AP:AP").Find(What:="docomo", LookAt:=xlPart) If R Is Nothing Then Exit Sub R.EntireRow.Delete Loop Sub DelLines3() Dim R As Range Do Set R = ActiveSheet.Range("AP:AP").Find(What:="au", LookAt:=xlPart) If R Is Nothing Then Exit Sub R.EntireRow.Delete Loop End Sub

  • エクセルで特定の行をマクロで削除したい。

    Sub DelLines() Dim R As Range Do Set R = ActiveSheet.Range("A:A").Find(What:="ここにキーワード", LookAt:=xlPart) If R Is Nothing Then Exit Sub R.EntireRow.Delete Loop End Sub 上記のソースだと一つのキーワードだけなのですが、複数のキーワードを追加したいのとブック全体(複数のシートから検索)で実行させたいのですが教えていただけませんか?

  • エクセルで特定の行を削除(特定文字が複数)

    http://okwave.jp/qa/q2692757.html に後述のマクロが紹介されていますが、 特定の文字が、"XXX"以外に、複数ある場合はどのようにすればよいか教えてください。 "XXX" and/or "YYY" and/or "ZZZ" の例で教えていただけませんか。 Sub DelLines()   Dim R As Range   Do     Set R = ActiveSheet.Range("B:B").Find(What:="XXX", LookAt:=xlPart)     If R Is Nothing Then Exit Sub     R.EntireRow.Delete   Loop End Sub

  • エクセルについて教えて下さい。

    エクセルについて教えて下さい。 列のいずれかに、特定の文字列が含まれる行を削除したいと考えています。 1つの文字列であれば、過去のQAからその解決策を見つけることができました↓ Sub test01() Dim x As String, c As Range x = InputBox("削除する文字を入力") With ActiveSheet.UsedRange Do While (1) Set c = .Find(What:=x, LookIn:=xlValues, LookAt:=xlPart) If c Is Nothing Then Exit Do c.EntireRow.Delete Loop End With End Sub 上記の場合だと、例えば削除対象の文字列は1種類しか記入できません。できたら、半角スペースや半角カンマなどで区切って、複数の文字列を対象に行いたいです。 どなたかご教授下さい。

  • 行の削除

    列Kに、削除という文字が入っている場合は、その行を削除するということで、3000行くらいあるなかで3分の2程度は削除する行に該当します。 下のマクロで試してみましたが、このマクロではとっても時間がかかってしまうんですが、どうしたら早く処理できるのか教えて下さい。 Dim R As Range Do Set R = ActiveSheet.Range("K:K").Find(What:="削除", LookAt:=xlWhole) If R Is Nothing Then Exit Sub R.EntireRow.Delete Loop

  • 特定文がある行を削除

    特定分がある行を削除しようと思い、以下のように設定いたしました。 Sub DelLines() Dim R As Range Do Set R = ActiveSheet.Range("A:A").Find(What:="指定文", LookAt:=xlWhole) If R Is Nothing Then Exit Sub R.EntireRow.Delete Loop End Sub これを、全てのシートに適用するにはどのように書けばよろしいのでしょうか?

  • EXCEL 特定の列内で記載があった行を削除

    G列に記載があったものだけを残したいと以前質問した際に回答を頂いた内容ですが、 この内容にプラスして、L列に何か記載があった場合、その行は削除するようにしたいと考 えています。 詳しい方が居りましたら、是非頂けないでしょうか? sub macro2()  range("G:L").autofilter field:=1, criteria1:="="  activesheet.autofilter.range.offset(1).entirerow.delete shift:=xlshiftup  activesheet.autofiltermode = false end sub 環境 Excel2003を利用しています。

  • マクロでキーワードを抽出して別のシートに貼り付けする

    セルA列にキーワードCCCが含まれていた場合に その行を削除してSheet2に貼り付けをしたく、下記のソースを 書いてみましたがエラーがでてしまいます。 どこが間違っているか添削していただけないでしょうか? Sub キーワード切取貼付() Dim r As Range For Each r In Range("A1", Range("A65536").End(xlUp)) Do Set r = Range("A:A").Find(What:=CCC, LookAt:=xlPart) If r Is Nothing Then Exit Do r.Worksheets("Sheet1").Range("A:A").Cut r.Worksheets("Sheet2").Range("A1").PasteSpecial Loop Next End Sub

  • タイトル名で複数列を取得し、その列を削除するマクロ

    1行目にタイトル名があり、タイトル名で複数列を取得し、その列を削除するマクロを作成したいです。 いろいろ調べ、下記のコードを試し、1つの列は削除可能でしたが、 複数となるとどのようになるのか分からず・・どなたかお教えいただければ助かります。 以下は「たんぽぽ」のみですが、1行目に花の名前が多数並んでおり、「たんぽぽ」「バラ」「百合」…を一緒に削除したいです。 Dim R As Range Do Set R = ActiveSheet.Range("A:ZZ").Find(What:="たんぽぽ", LookAt:=xlWhole) If R Is Nothing Then Exit Sub R.EntireColumn.Delete Shift:=xlToLeft Loop

  • エクセルで任意の文字列の1行後に改ページ挿入

    どなたかお教え下さい。 沢山の文字列が並んだデータがあり、下記関数だと「...コマンド正常終了」の 文字列の行に改ページが挿入されてしまいます。 該当文字列行ではなく、「...コマンド正常終了」の文字列の1行あとに改ペー ジを挿入したいのですが どこを修正または追加したら良いかご教授願います。 初心者ですみません・・・ ------------------------------------------------------------------------- Dim r As Range, fr, fa As String Application.ScreenUpdating = False With ActiveSheet Set r = .Range("A1:A" & .Range("A65536").End(xlDown).Row) Set fr = r.Find("...コマンド正常終了", LookAt:=xlPart) If Not fr Is Nothing Then fa = fr.Address Do If fr.Address <> "$A$1" Then .HPageBreaks.Add Before:=fr Set fr = r.FindNext(fr) Loop While Not fr Is Nothing And fa <> fr.Address End If End With -------------------------------------------------------------------------

専門家に質問してみよう