- ベストアンサー
エクセルのA列とB列で重複するデータを抽出して別の列に表示する方法
- エクセルのA列とB列で重複するデータを抽出して、別の列に表示する方法を解説します。
- 抽出する条件は、A列にもB列にあるデータすべて、A列にしかないデータすべて、B列にしかないデータすべてです。
- C列には重複するデータを表示し、D列にはA列にしかないデータを表示し、E列にはB列にしかないデータを表示します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
No.2です! たびたびすみません。 投稿した後で質問文を読み返してみるとデータが約10000行あるということなので、 前回の数式の「1000」の部分を全て「10000」に変更してみてください。 そして余計なお世話かもしれませんが、10000行までオートフィルでコピーするのは大変でしょうから、 当方使用のExcel2003の場合ですが もう1列A列に列を挿入します。 A2セルに「1」を入力後、A2セルをアクティブにします → メニュー → 編集 → フィル → 連続データの作成 → 「列」を選択 → 「停止値」に「10000」としてOK そして、B2~D2セルに作業列が移動しているはずですので、B2~D2セルを範囲指定し、 D2セルのフィルハンドルの(+)マークでダブルクリック 10000行目までコピーできますが、少し時間がかかると思います。 最後にA列全てを削除します。 以上、何度もごめんなさいね。m(__)m
その他の回答 (2)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 No.1さんとほとんど同様の方法になります。 ↓の画像のように作業用の列を3列使っています。 とりあえず、1000行目まで対応できるようにしています。 3列挿入していますので、元の列は右にずれてしまいます。 作業列A2セルに =IF(COUNTBLANK(D2:E2)=2,"",IF(AND(COUNTIF($E$2:$E$1000,D2),COUNTIF($D$2:D2,D2)=1),D2*1000+ROW(A1),"")) B2セルに =IF(COUNTBLANK(D2:E2)=2,"",IF(AND(COUNTIF($E$2:$E$1000,D2)=0,COUNTIF($D$2:D2,D2)=1),D2*1000+ROW(A1),"")) C2セルに =IF(COUNTBLANK(D2:E2)=2,"",IF(AND(COUNTIF($D$2:$D$1000,E2)=0,COUNTIF($E$2:E2,E2)=1),E2*1000+ROW(A1),"")) という数式を入れ、A2~C2セルを範囲指定し、C2セルのフィルハンドルで下へずぃ~~~!っとコピーします。 そしてF2セルは =IF(COUNT(A$2:A$1000)<ROW(A1),"",INDEX($D$2:$D$1000,MOD(SMALL(A$2:A$1000,ROW(A1)),1000))) として隣のG2セルまでコピー。 H2セルは =IF(COUNT($C$2:$C$1000)<ROW(A1),"",INDEX($E$2:$E$1000,MOD(SMALL($C$2:$C$1000,ROW(A1)),1000))) という数式を入れています。 最後にF2~H2セルを範囲指定し、H2セルのフィルハンドルで下へコピーすると 画像のような感じになります。 以上、長々と書きましたが 参考になれば幸いです。m(__)m
- mt2008
- ベストアンサー率52% (885/1701)
A列、B列に入っているのが文字列ではなく数値で、書式設定で「001」の様に表示しているだけの場合、以下の様にすることで可能です。 作業列を3つ使います。 G1に =IF(COUNTIF(A$1:A1,A1)=1,IF(COUNTIF(B:B,A1)>0,A1,""),"") H1に =IF(COUNTIF(A$1:A1,A1)=1,IF(COUNTIF(B:B,A1)=0,A1,""),"") I1に =IF(COUNTIF(B$1:B1,B1)=1,IF(COUNTIF(A:A,B1)=0,B1,""),"") と、入れてG1:I1を下方向にコピーします。 これで途中に空白が入ったデータが出来ます。 これをC~E列に空白セルを詰めて表示します。 C1に =IF(ROW()>COUNT(G:G),"",SMALL(G:G,ROW())) と入れてコピーし、C1:E1000(データが1000行以上ある時はその行まで)に貼り付けます。
お礼
丁寧にありがとうございました。 今回1回だけの編集なんですが、おかげで助かりました。