プロが教えるわが家の防犯対策術!

検索サイト等で調べてみたのですが
ちょっとわからなかったので
どなたかおわかりの方はお教えください。

メールのリストの中から例えば1万件の中から

その中から 特定のワード bank / fudousan / camara や@xxxxx.comといったキーワード20件以上を省きたいという場合
今までは
一つずつ bankを検索をかけて リストを出し
fudousanを検索かけ リストを出してといったように
20件省きたいワードがあれば20回検索しないといけなかったのですが
関数等をつかって 省きたいワードリストから
手早くメールリストから特定のアドレスを省きたい
もしくは省くように数値で代換するといった方法は
どのようにすればよろしいのか
知っている方いらっしゃいましたら教えてください。

なんとなくlook upやvlook upといった関数からできそうな感じはしたのですが、ちょっとよくわからなかったので
教えてくださいますと大変助かります。

A 回答 (2件)

#01です。


「省きたい」の意味は先の回答で合っていましたか。それであればマクロ(VBA)で検索キーワードを含む行を削除するようにしてみます。

以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。

キーワードは20個書けるようにしていますので、4行目~7行目を修正して下さい。キーワードは「,(半角カンマ)」で区切る必要があります。また対象のリストはA列にあることにしています。もし別の列なら12行目の
 Cells(rCnt, "A")
で "A" の部分を正しい列名に直して下さい

なおマクロの実行結果はUNDOで復活できません。実行前に必ずファイルのセーブを取っておいてください

Sub Macro1()
Dim keyword() As String
Dim idx, rCnt As Long
 keyword = Split("bank,fudousan,camera,@xxxxx.com,Keyword5" _
     & ",Keyword6,Kerword7,Keyword8,Keyword9,Keyword10" _
     & ",Keyword11,Keyword12,Keyword13,Keyword14,Keyword15" _
     & ",Keyword16,Keyword17,Keyword18,Keyword19,Keyword20" _
     , ",")
 Application.ScreenUpdating = False
 For rCnt = Range("A65536").End(xlUp).Row To 1 Step -1
  For idx = 0 To UBound(keyword)
   If InStr(Cells(rCnt, "A"), keyword(idx)) > 0 Then
    Rows(rCnt).Delete
    Exit For
   End If
  Next idx
 Next rCnt
 Application.ScreenUpdating = True
End Sub

VBAで行っても、5万行もあればそれなりに時間がかかります。マクロ実行がなかなか終わらなくても焦らないでください。どうしても途中で止めたかったら ESCキーを何度か叩くと止めることができます。

VBAならシートに関数を埋め込む必要がなくなるので、シートで入力操作を行っているときに動作が遅くなっていらいらするようなことはなくなります。関数を使うか、VBAを使うかはお好みだと思います
    • good
    • 0
この回答へのお礼

zap35様
ご丁寧にご回答頂きましてどうもありがとうございます。
とても助かりました。

お礼日時:2007/09/19 13:38

A列に調べたい文字列が(1万行)あるとして、空いている列(例えばF列)のF1:F20に検索キーワード(bank,fudousan,camera…)を入力します



1行目の空き列に
 =IF(MIN(INDEX(FIND($F$1:$F$20,A1&$F$1:$F$20),))>LEN(A1),"×","○")
を貼り付けて下方向にコピーすると、検索キーワードがあれば「○」、なければ「×」が表示されます。
後はオートフィルタで「×」を抽出して、行をまとめて削除してください

ただし1万行もあると処理がかなり重くなるかもしれません。そのときはVBAの方が実用的ですね。
    • good
    • 0
この回答へのお礼

どうもありがとうございます。
教えて頂きましたとおりに実行しましたら
エクセルの初心者の私でも出来ました。
どうもありがとうございます。
実際データは5万件以上あるので
もしお分かりで差し支えがなければ
VBAというやり方をご存知でしたら
どのようにやればいいかお教え頂けますと
大変助かります。よろしくお願い致します。

お礼日時:2007/09/18 18:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!