• ベストアンサー

エクセルでA列とB列の差分を抽出

エクセルでA列にはあるがB列にはない項目を抽出するにはどうしたらよいでしょうか。 下の例だと、C列あたりに、山本、川田を抽出したいのですが…… A列にはB列のデータがすべて含まれています。 A列は10月と11月のデータで、B列は10月のデータです。 A列   B列 山田  山田 山本  川上 川田 川上

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

  • ベストアンサー
  • ysko614
  • ベストアンサー率31% (103/329)
回答No.1

色々な方法がありますが、COUNTIF関数とIF関数で、一致するものしないものが選択できそうですね。 データがA1:A4、B1:B2にあるとします。 C列に =IF(COUNTIF($B$1:$B$2,A1)=0,A1,"") と入力すれば、A1の値がB列の範囲内になければ、A1を表示、ない場合には何も表示しません。 ご確認下さい。

ringoapples
質問者

お礼

ありがとうございます。できました。 こんなシンプルでわかりやすい方法があったんですね。

その他の回答 (2)

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

次の方法は如何でしょうか。 C1セルに次の数式を設定し、下方向にコピーして下さい。 配列数式の為、入力完了時にshift+ctrl+enterキーを同時押下して下さい。 =INDEX(A:A,SMALL(IF(COUNTIF($B$1:$B$100,$A$1:$A$100)=0,ROW($A$1:$A$100),9999),ROW(A1)))&""

  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.2

関数で簡単にできないかちょっと首をひねってみましたが、きれいにできる方法を思いつかなかったので、マクロを書いてみました。 Alt+F11でVBAの画面を起動して、以下のマクロを貼り付けてみてください。 マクロの実行はAlt+F8からできますが、フォームのツールバーからボタンを配置して、このマクロを登録しておけばボタン一つで表示されます。 Sub AとBの差分をCに表示()   Dim r As Range   Dim i As Integer   i = 1   With Worksheets(1)     Range("C:C").ClearContents     For Each r In .Range("A1", .Range("A65535").End(xlUp))       If .Range("B:B").Find(r.Value) Is Nothing Then         Cells(i, 3).Value = r.Value         i = i + 1       End If     Next   End With End Sub

ringoapples
質問者

お礼

解答ありがとうございます。 今、VBAを勉強しているので参考になります。