アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A列   B列
山田  山田
山本  川上
川田
川上

A 回答 (3件)

色々な方法がありますが、COUNTIF関数とIF関数で、一致するものしないものが選択できそうですね。


データがA1:A4、B1:B2にあるとします。
C列に
=IF(COUNTIF($B$1:$B$2,A1)=0,A1,"")
と入力すれば、A1の値がB列の範囲内になければ、A1を表示、ない場合には何も表示しません。
ご確認下さい。
    • good
    • 12
この回答へのお礼

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

お礼日時:2006/11/15 20:28

次の方法は如何でしょうか。


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)))&""
    • good
    • 9

関数で簡単にできないかちょっと首をひねってみましたが、きれいにできる方法を思いつかなかったので、マクロを書いてみました。


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
    • good
    • 8
この回答へのお礼

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

お礼日時:2006/11/15 20:32

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