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

お世話になります。

添付のように、B列にキーワードがあって(実際には1万くらい)
E列にNGワードリスト(100個くらい)があります。(実際にはE列ではなく別シート)

B列の中で、E列のNGワードリストに該当するキーワードがある行を削除したいです。
そのため、NGワードに該当する場合は、C列に 例えば 「1」と記入し、
あとで、フィルターで「1」が含まれる行を削除しようと考えております。

上記を実行する最適な関数をご指導頂きたくお願いします。
VBAは自分では使ったことはありません。

「Excel:NGキーワードリストでフィル」の質問画像

A 回答 (5件)

NG ワードへの該当の有無を記録として残しておきたい場合は、COUNTIF 関数などで抽出してもいいです。



しかし No.4 さんが回答されているフィルタオプションであれば一発で終わるので、基本的にはこちらをお勧めします。ベストアンサーは辞退します。

初級レベルの VBA でもできますが、質問文にある処理だけを実行して終わりなのであれば、VBA は特に必要ありません。

フィルタオプションに限りませんが、削除されたデータは、残りません。必要に応じて、元データのバックアップを別シートにでも取っておくとよいかもしれません。

フィルタオプションの挙動・使い方について、若干、補足します。

抽出後、単に不要な部分を削除すれば、表示されている行のみが削除され、非表示の部分は残されている状態になります。この非表示を解除するには、「データ」タブの「並べ替えとフィルタ」グループにある「クリア」ボタンを押します。非表示の範囲の行番号を右クリックして「再表示」するわけではないので、お間違えなきよう。
「Excel:NGキーワードリストでフィル」の回答画像5
    • good
    • 0

>NGキーワードリストでフィルターしたい



右の表の「NGワード」と書いてあるセルに、左の表と同じ「キーワードリスト」と記入(実際は左の表のセルからコピーして貼り付ける)

改めて左の表のシートを開いてから、
ご利用のエクセルのバージョンがご相談に書かれていませんが、データタブのフィルタグループの中から「詳細設定」を開始
(エクセル2003以前では、データメニューのフィルタから「フィルタオプションの設定」を開始)

 抽出先は選択範囲内を選択
 リスト範囲は左の表のセル範囲を設定
 検索条件範囲は右の表の「キーワードリスト」と記入したセル以下(旧NGリスト)のセル範囲を設定

そしてOKすると、NGリストに該当する行を一発で抽出できます
必要に応じて選択して行削除する等で消去します。


http://www.eurus.dti.ne.jp/~yoneyama/Excel/filte …
    • good
    • 0

>上記を実行する最適な関数をご指導頂きたくお願いします。


IF関数とCOUNTIF関数で数式を構成すれば良いでしょう。
C2=IF(COUNTIF(E:E,B2)>0,1,"")
C2を必要数下へコピーしますがオートフィルで10000行の処理は面倒なのでコピー&ペーストで実行することをお勧めします。
C2セルを選択してコピーし(クリップボードへ保存)、B2セルに移動してCtrl+↓キーでB列の最下行へ移動します。
同じ行のCセルへ移動してCtrl+Shift+↑キーでC1セルまで選択し、Shiftを押しながらC3セルをクリックすると目的のコピー先を選択できます。
そこで貼り付けを実行すれば完了です。
C列に1がある行をフィルターで選択し、削除すれば目的通りになるでしょう。
    • good
    • 0

データがNGリストに含まれているかどうか判定するなら、以下のようなCOUNTIF関数を使うのがお勧めです。



=COUNTIF(NGリスト範囲,B2)

NGリストにない場合に0を表示しないのであれば以下のようしてください。

=IF(COUNTIF(NGリスト範囲,B2),1,"")
    • good
    • 0

VLOOKUPで該当するものに「1」を入れフィルターで「1」のものだけ削除


終了後関数を削除する

エラーコードが出ても検出するためだけのものなのでこれでいかれると思いますよ。
    • good
    • 0

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