- ベストアンサー
エクセルでA列とB列の差分を抽出
エクセルでA列にはあるがB列にはない項目を抽出するにはどうしたらよいでしょうか。 下の例だと、C列あたりに、山本、川田を抽出したいのですが…… A列にはB列のデータがすべて含まれています。 A列は10月と11月のデータで、B列は10月のデータです。 A列 B列 山田 山田 山本 川上 川田 川上
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
色々な方法がありますが、COUNTIF関数とIF関数で、一致するものしないものが選択できそうですね。 データがA1:A4、B1:B2にあるとします。 C列に =IF(COUNTIF($B$1:$B$2,A1)=0,A1,"") と入力すれば、A1の値がB列の範囲内になければ、A1を表示、ない場合には何も表示しません。 ご確認下さい。
その他の回答 (2)
- mu2011
- ベストアンサー率38% (1910/4994)
次の方法は如何でしょうか。 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)
関数で簡単にできないかちょっと首をひねってみましたが、きれいにできる方法を思いつかなかったので、マクロを書いてみました。 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
お礼
解答ありがとうございます。 今、VBAを勉強しているので参考になります。
お礼
ありがとうございます。できました。 こんなシンプルでわかりやすい方法があったんですね。