• ベストアンサー

エクセルで複数列に共通した項目の抽出方法

エクセルで複数列で重複したセルを抽出する方法がわかりません。 具体的には、ABC各列にランダムな6桁の数字がそれぞれ500行づつあり、AとB列で重複(同じ)数字があれば、D列に列挙(重複した個数ではなく、たとえば310257などと重複していた数字)し、またABCの3列ともに重複している数字をE列に列挙するなど、複数列で重複したセルを抽出するにはどういう方法があるんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#204879
noname#204879
回答No.3

[フィルタオプションの設定]で可能です。“頭を痛める”関数は一切不要! 簡単のために、列A~Cのデータが「500」行ずつでなく下のように「10」行ずつある場合を考えます。ただし、先頭行は同じ文字列(例えば data)を入力しておきます。    A    B    C    D    E 1  data  data  data  data  data 2  123456 123457 123462 123461 123462 3  123466 123459 123465 123462 123466 4  123456 123461 123465 123466 5  123461 123462 123465 123456 6  123460 123461 123466 7  123456 123466 123463 8  123462 123461 123465 9  123456 123466 123457 10 123461 123463 123466 11 123461 123456 123458 1.[データ]→[フィルタ]→[フィルタオプションの設定]を実行 2.“指定した範囲”に目玉入れ 3.[リスト範囲]ボックス内にマウスカーソルを置き、範囲 B1:B11 を   撫で撫で 4.[検索条件範囲]ボックス内にマウスカーソルを置き、範囲 A1:A11   を撫で撫で 5.[抽出範囲]ボックス内にマウスカーソルを置き、セル D1 をチョー   ン 6.“重複するレコードは無視する”にチェック入れ 7.[OK]をクリック 8.ステップ1~7の繰り返し。ただし、次のように読み替え   範囲 B1:B11 → 範囲 C1:C11   範囲 A1:A11 → 範囲 D1:D5   セル D1   → セル E1

yasukatta
質問者

お礼

早速のわかりやすくも丁寧な回答、ありがとうございました。エクセル初心者なので、簡単な方法は大歓迎です。それに『撫で撫で』が、高ポイントにつながりました。固苦しい文面には、息抜きも必要かと・・・。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

COUNTIFを使う。 例データ 第2行から第9行まで(データはA,B、C列。データ順序は関係ないはずだが、下記例ではわかりやすいように昇順にした) A列  B列    C列  D列   E列    E列   F列 1 2 2 - 2 - 2 2 4 5 1 4 1 9 3 5 7 - 6 - 11 4 6 9 2 9 - #N/A 6 8 10 3 11 - 7 9 11 - - - 9 11 14 4 - 2 11 12 15 5 - 3 -は左詰にならぬよう空白セルに入れたもので、空白セルにしてください ーーー 式  D2 =IF(COUNTIF($B$2:$B$11,A2)=0,"",MAX($D$1:D1)+1) 下方向に式を複写。 E2 =INDEX($A$1:$A$11,MATCH(ROW()-1,$D$1:$D$11,0)) 下方向に式を複写。 ここが質問前半の結果 ーー f2 =IF(AND(COUNTIF($B$2:$B$11,A2)>0,COUNTIF($C$2:$C$11,A2)>0),MAX($F$1:F1)+1,"") 下方向に式を複写。 G2 =INDEX($A$1:$A$11,MATCH(ROW()-1,$F$1:$F$11,0)) 下方向に式を複写。 ここが質問後半の結果 ーー 以上は自称imogasi方式。 #N/Aを出さないようにする式は、質問者が考えるか、Googleでimogasi方式で照会すると、私の回答の中に出てきます。 (D、E列の最大値より、行数が大になれば空白を返す式にする)

yasukatta
質問者

お礼

力の入った回答をありがとうございます。お手数をお掛けいたしました。ところが私はエクセル初心者でして、関数はこれからというレベルです。いただいた回答を教材に、検証に励みたく存じます。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

D列には =IF(ISERROR(MATCH(A1,B:B,FALSE)),"",A1) 或いは =IF(COUNTIF(B:B,A1)=0,"",A1) E列には =IF(ISERROR(MATCH(A1,B:B,FALSE)&MATCH(A1,C:C,FALSE)),"",A1) 或いは =IF(COUNTIF(B:B,A1)=0,"",IF(COUNTIF(C:C,A1)=0,"",A1)) で下フィルしてみてはダメですか?

yasukatta
質問者

お礼

早速の回答ありがとうございました。私はエクセル初心者でして、関数はこれからというレベルです。いただいた回答を教材に、検証と理解に励みたく存じます。

関連するQ&A