• ベストアンサー

エクセル2007において、別々のデータの一致するものを削除したい。

エクセル2007において、別々のデータの一致するものを削除したい。 ある文章中における英単語の出現頻度のリストAがあります。この中にだいたい3000語の単語とその出現頻度の数値が並んでいます。リストBに中学1年で習う英単語約400語が並んでいます。リストAからリストBの英単語と一致するものを削除したいと考えています。どのように行えばよいのか見当がつきません。参考になる情報を教えてもらえませんか。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.1

一例です。 (1)仮にリストAをsheet1で単語をA列、出現数をB列、リストBをsheet2で単語をA列、どちらも見出し行ありとします。    sheet1のC2に=COUNTIF(Sheet2!A:A,A2)>0を設定、下方向にコピー    数式の結果が「TRUE:該当単語あり」、「FALSE:該当単語なし」で表示 (2)リストAをオートフィルタ(ホームタブ→並び替えとフィルタ→フィルタ)し、新規列のダウンボタンで「FALSE」を選択する (3)表示分をコピーし、別シートに貼り付け

hiyahiya12345
質問者

お礼

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

その他の回答 (1)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

ワークシート関数でも十分できますが、一応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)を選択して実行します。

hiyahiya12345
質問者

お礼

ありがとうございました。なんかすごいです。べんきょうになります。