- ベストアンサー
エクセル2007において、別々のデータの一致するものを削除したい。
エクセル2007において、別々のデータの一致するものを削除したい。 ある文章中における英単語の出現頻度のリストAがあります。この中にだいたい3000語の単語とその出現頻度の数値が並んでいます。リストBに中学1年で習う英単語約400語が並んでいます。リストAからリストBの英単語と一致するものを削除したいと考えています。どのように行えばよいのか見当がつきません。参考になる情報を教えてもらえませんか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
一例です。 (1)仮にリストAをsheet1で単語をA列、出現数をB列、リストBをsheet2で単語をA列、どちらも見出し行ありとします。 sheet1のC2に=COUNTIF(Sheet2!A:A,A2)>0を設定、下方向にコピー 数式の結果が「TRUE:該当単語あり」、「FALSE:該当単語なし」で表示 (2)リストAをオートフィルタ(ホームタブ→並び替えとフィルタ→フィルタ)し、新規列のダウンボタンで「FALSE」を選択する (3)表示分をコピーし、別シートに貼り付け
その他の回答 (1)
- merlionXX
- ベストアンサー率48% (1930/4007)
ワークシート関数でも十分できますが、一応VBAで行う一例をあげておきます。 以下の前提でコードを書きました。 リストAはSheet1にあり、単語はA列に記入されている。 リストBはSheet2にあり、単語はA列に記入されている。 リストBはA1セルからデータがあり、途中に空白行はないものとする。 以下の手順でやってみてください。 但し、失敗するといけないから必ずコピーをとってからにしてくださいね。 1.AltキーとF11キー同時に押し(以下Alt+F11キーと記述)て Visual Basic Editor を呼び出します。 2.Visual Basic Editor のメニューから「挿入」、「標準モジュール」で出てきたコードウィンド(右側の白い広い部分)に以下のコード(Sub~End Sub)をコピペします。 '********これより下********** Sub test01() Dim myC As Range, tg As Range '変数宣言 Dim i As Long With Sheets("Sheet2") 'Sheet2で Set myC = .Range("A1") 'データ開始位置 Do While myC <> "" 'データがある限り Set tg = Sheets("Sheet1").Range("A:A").Find(What:=myC.Value, LookAt:=xlWhole) 'Sheet1を検索 If Not tg Is Nothing Then tg.EntireRow.Delete '対象があれば行削除 End If Set myC = myC.Offset(1) '1行下に移動 Loop '繰り返す End With Set myC = Nothing '後処理 Set tg = Nothing End Sub '********これより上********** 3.Alt+F11キーでワークシートへもどります. 4.Alt+F8キーで出てきたマクロ名(test01)を選択して実行します。
お礼
ありがとうございました。なんかすごいです。べんきょうになります。
お礼
ありがとうございました。助かりました。