重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

よろしくお願いします。

Excel2010を使用しています。

シートA(マスターデータ)とシートB(ランダムデータ)のリストを比較して
シートAのデータからシートBのデータを取り除いたデータを抽出したいです。


シートA(マスターデータ)
A列   B列
111111 田中一郎
222222 田中二郎
333333 田中三郎
444444 田中四郎


シートB(ランダムデータ)
A列   B列
222222 田中二郎
444444 田中四郎


この場合、抽出したいのは
111111 田中一郎
333333 田中三郎
の2名です。


いろいろネットで調べてトライしてみたのですがなかなかうまくいきませんでした。

Excelは少し苦手ですががんばりますのでよろしくお願いします。

A 回答 (2件)

関数でも対応できますが、複雑で理解しにくいと思いますので、基本機能であるフィルタオプションの設定を利用することをお勧めします。



マスターシートを新規シートにコピー貼り付けし、「データ」タブの「詳細設定」をクリックし、リスト範囲をコピーした項目名を含むリスト範囲にして、検索条件範囲にシートBのデータ範囲を選択し「OK」します。
抽出されているシートBのデータ範囲を選択し、Deleteで削除してそのまま右クリックから「行の削除」をしてフィルタモードを解除すれば完成です。

この回答への補足

ご回答ありがとうございます。

何度かやっているうちにできました!!


本当にありがとうございました、助かりました。

補足日時:2013/09/11 15:17
    • good
    • 1

参考までに。



抽出したデータの使い道によって適切な対応が異なりますが、例えば関数で対応する場合は以下のような関数を使うことになります。
元データおよび削除データがSheet1およびSheet2の2行目から記載されている場合、以下の式を入力して右方向に1つ、下方向に適当数オートフィルしてください。

=INDEX(Sheet1!A:A,SMALL(INDEX(COUNTIF(Sheet2!$A$2:$A$100,Sheet1!$A$2:$A$100)*1000+ROW($2:$100),),ROW(1:1)))&""

ただし、表示データ(数式)範囲が広くなる場合や、元データのデータ数が多い場合は、数式が重くなりシートの動きが重くなりますので、あまりお勧めできません(この場合でも、B列の名前だけこの数式で求めて、この名前のデータから関数でA列の値を求めるほうが計算負荷が少なくなります)。

またA列の数字は文字列として返しますので、もし数字として返したいなら以下のような処理をするのが簡単です。

IF(B2="","",INDEX(Sheet1!A:A,SMALL(INDEX(COUNTIF(Sheet2!$A$2:$A$100,Sheet1!$A$2:$A$100)*1000+ROW($2:$100),),ROW(1:1))))
    • good
    • 0

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