• ベストアンサー

エクセルで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を勉強しているので参考になります。

関連するQ&A

  • エクセルでA列B列C列の重複するレコードのみを表示

    エクセルのA列とB列とC列で重複するレコードのみを抽出して別の列に表示させたい。 エクセルのA列とB列とC列にそれぞれ1000行くらいのデータがあります。 それぞれの列内には重複レコードがあります。 この条件の中で 「A列とB列とC列に重複するデータすべて」 を抽出したいのですが、どんな方法がありますか。 抽出されたデータで重複レコードの場合は1件のみで表示したいです。 よろしくお願いします。 例   A   B   C   抽出  1-001-002--002--002 2-002-002--005--007 3-003-007--007--008 4-007-008--008--011 5-008-008--010 6-008-010--011 7-011-011--012 8-013-014--013

  • エクセルのA列とB列で重複するレコードのみを抽出して別の列に表示させた

    エクセルのA列とB列で重複するレコードのみを抽出して別の列に表示させたい。 エクセルのA列に約1,000行くらいのデータが有ります。 このA列内で重複レコードがあります。 B列に約1,000行くらいのデータが有ります。 B列内でも重複レコードが有ります。 この条件の中で (1)A列にもB列にあるデータすべて (2)A列にしかないデータすべて (3)B列にしかないデータすべて を抽出したいのですが、どんな方法がありますか? それで (1)をC列 (2)をD列 (3)をE列 に並べて表示させたいです。 さらに抽出されたデータで重複レコードの場合は1件のみで表示したいです。 複数の操作を繰り返すのではなく C,D,E列に式を入れるだけで済ませる事は可能でしょうか? よろしくお願いします。 例    A   B    C   D   E 1-001-002--001--004--007 2-002-002--002--006--008 3-001-001--005--010 4-005-007 5-001-005 6-004-005 7-004-008 8-010-007 9-006-007 A列には001が3個、002が1個、005が1個有ります。 B列には001が1個、002が2個、005が2個有ります。 A列にもB列にも有るのは、001と002と005ですから これがC列に表示されます。 でそれぞれA列にもB列にも複数有りますが、1個として判定なので よって、C列には 001 001 001 001 002 002 005 005 と表示ではなく 001 002 005 と表示したい。 次にD列はA列に有る物だけですから 004 006 010 となります。B列には004は2個有りますが同じ値なので 004 004 006 010 では無く004は1個の表示です。 E列はB列のみのデータなので 007 008 です。 同じくB列には007が3個有りますが1個ともなします。 007 007 007 008 では無く 007 008 です。

  • エクセルで、異なる文字列を抽出するには。

    エクセルで、A1からA10に文字列のデータがあるとします。 10個のセルのデータは「あああ」が4こ「いいい」が3こ「ううう」が2こ「えええ」が1こ順不同であった場合、B1に「あああ」B2に「いいい」B3に「ううう」B4に「えええ」と異なる文字列のみ1個ずつ抽出するにはどうすればいいでしょうか。

  • エクセルで、A列に「20081020」が入っており、B列に「20081

    エクセルで、A列に「20081020」が入っており、B列に「20081030」、C列に「20090102」 と数値が入っているとします。 お分かりの通り、日付がスラッシュ無しで入っているのですが、A列に対してB,C列のような日付が何日後、もしくは何ヶ月、何日後のデータなのかわかるようにしたいです。 関数でありますでしょうか? 上記の例であればB列は10日後、C列は64日後と表示されるようにしたいです。 (数字だけでも構いません) 教えていただければ幸いです。 何卒よろしくお願いします。

  • エクセル データ抽出について

    (データ)    A B C 1  I あ 20 2  II い 30  3  III う 10 4  IV あ 10 5  V い 20  6  VI う 30 したい事(1) A列のうちいずれかの項目を入力すると、B列の該当値を抽出 したい事(2) (1)のB列該当値が検索一行目で抽出されたら、その値からC列の値を抽出したい 困っていること・・・B列に全く同じ名前の項目があるため、抽出すると 先に来る値が飛んできてしまう 例:IVを入れると「あ」が自動で抽出され、その「あ」でさらに「10」を抽出したいのに、先にあるC1の「20」が飛んできてしまう。 それぞれ、(1)(2)にどのような関数を入れると、抽出したい値が出てくるでしょうか?

  • エクセルでA列とB列のデータを統合するには?

    エクセルでA列とB列のデータを統合することはできるでしょうか?よろしくおねがいします。 A列^^^^^B列 1,^^^^^^Tokyo 2,^^^^^^Osaka 3,^^^^^^Nagoya 下のようにしたいのです。「^^」はスペースをあらわします。 A列^^^^^^^B列(データはなし) 1^^Tokyo 2^^Osaka 3^^Nagoya エクセル2002です。

  • Excel2013 同一列の抽出

    Excelの使い方について、教えていただいたく思います。 Win7 Excel2103を使用しています。 とあるデーターの同一行にて、A列、B列の値が同一のものだけを抽出する方法を探しております。 当方、あまりExcelに詳しく無い為、よろしくお願い申し上げます。 【例】       A列      B列 1行目   123     234 2行目   567     123 3行目   123     123 4行目   234     123 5行目   234     234 6行目   234     567 ・ ・ ・ 3行目、5行目がA列、B列が同一の為、抽出できないでしょうか? 該当行の色分け、不要行の削除等、方法は問いません。 宜しくお願い申し上げます。

  • エクセルでA列にある文字をB列で探す

    Excelで、A列に入っている文字(一文字)がB列のどこかに含まれているか、そうでないかを調べるにはどうすればいいでしょうか。 データ例 A B 算 漢字 国 字画 理 文字 社 国字 図 数字 画 画数 となっているときに Bの字画、国字、画数、を見つける方法です。 データが少なければA列を一つ一つ検索していけばいいのはわかるのですが、まとめてできる方法を教えてください。

  • A列 B列

       A列 B列  1  1 Aさん  2  2 Bさん  3    Aさん  4  1 Bさん 上記の表のような場合、Aさんの合計は、1です。 数字が入力されている件数は、1件です。 Bさんの合計は、3で、数字の入力されている件数は、2件あります。 このように、Aさんの合計および、数字が入力されている箇所の件数を抽出するには、 どのようなエクセルの式を入れるといいですか? 昨日から、何度もすみません‥(下矢印)宜しくお願いします。

  • Excelで、A列に「ある特定のキーワード」が入っていたら、それをB列に抽出したい

    タイトルの通りなのですが、具体的な例を以下に記載します。 A列には、3行~5行からなるアンケートに対する回答がテキストとして存在している。 このテキストの中に「ありがとう」という文字列が存在した場合、B列に「1」と入力されるようにしたい。 やりたいこととしては、単純にこれだけです。 で、ここからさらに「複数のキーワードを抽出したい」というのが今回の質問です。 A列に以下のテキストデータがあるとします。 ---------------------------------------------------------- いつも親切にしてくれてありがとう。 近いうちに、私からあたなに対してお礼をしたいと思います。 よかったら食事にでも行きましょう。 ---------------------------------------------------------- この中から「ありがとう」「親切」「お礼」「食事」というキーワードを 拾い、B列、C列、D列、E列にそれぞれ「1」と反映されるようにしたい。 イメージ画像を添付したので、そちらを見ていただければと思います。 イメージ画像はすべて手動で入力した結果ですが、これを自動で行いたいと思っています。 画像でいうと、C列にテキストデータをペーストしたら、自動的にD、E、F、G列に「1」という数字が入るようにしたいです。 エクセル2003を使っています。 どうか、よいアドバイスをいただければと思います。

専門家に質問してみよう