• 締切済み

A列のデータの重複を取り除いてC列に表示。ただし、B列に存在するデータはC列に表示させない

お世話になります。 Excel2000を使っています。 A列のデータがA1,A2,...の順に 1 2 3 2 3 4 B列のデータがB1,B2,...の順に 2 4 6 8 だとします。 まず、A列のうち重複するデータは1つとみなして 1 2 3 4 とし(順番はどうでもいいです)、 さらにB列に含まれる2,4,6,8を取り除いた 1 3 をC列に表示させたいです。C列の順番はどうでもいいです。 どうすればできるでしょうか?ご教示ください。よろしくお願いします。

みんなの回答

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

imogasi方式利用 既回答に比べ、式の意味が少し判りやすいかな。ただし作業列を使う。 例データ Sheet2で 第1行は(D1がは)数字がないこと) A列   B列      D列(作業列) 1 2 1 2 4 3 6 2 2 8 3 4 5 3 D2は =IF(AND(COUNTIF($A$2:A2,A2)=1,ISERROR(MATCH(A2,$B$2:$B$11,0))),MAX($D$1:D1)+1,"") 意味は (A) A列で上行から見て初出か (B) B2:B11にA列での、考えているデータが見つかるか=>見つからない場合を採って 両条件(A),(B)を満たせば、D列で上行からの連番を振っている。 D列で下方向に式を複写 ーー Sheet3に行って A1に=INDEX(Sheet2!$A$1:$A$11,MATCH(ROW(),Sheet2!$D$1:$D$11,0),1) と入れてA3まで式を複写。もっと下まで複写するなら、 =IF(ROW()>MAX(Sheet2!$D$1:$D$11),"",上記の式)

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.4

数値ですので、INDEX関数は必要なかったかな C1=SMALL(IF((MATCH($A$1:$A$6,$A$1:$A$6,0)=ROW($A$1:$A$6))*(COUNTIF($B$1:$B$4,$A$1:$A$6)=0),$A$1:$A$6),ROW()) 配列数式です No3さんの回答を利用すると C1=IF(ROW(A1)>SUMPRODUCT((MATCH($A$1:$A$6,$A$1:$A$6,0)=ROW($A$1:$A$6))*(COUNTIF($B$1:$B$4,$A$1:$A$6)=0)),"",LARGE(INDEX((MATCH($A$1:$A$6,$A$1:$A$6,0)=ROW($A$1:$A$6))*(COUNTIF($B$1:$B$4,$A$1:$A$6)=0)*$A$1:$A$6,),ROW()))

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.3

◆式が長くなりますが、またC列の順番が「3,1」と表示されますが ★すこし、強引ですので、参考程度に C1=IF(ROW(A1)>SUMPRODUCT((MATCH($A$1:$A$6,$A$1:$A$6,0)=ROW($A$1:$A$6))*(COUNTIF($B$1:$B$4,$A$1:$A$6)=0)),"",INDEX(A:A,LARGE(INDEX((MATCH($A$1:$A$6,$A$1:$A$6,0)=ROW($A$1:$A$6))*(COUNTIF($B$1:$B$4,$A$1:$A$6)=0)*ROW($A$1:$A$6),),ROW())))

noname#204879
noname#204879
回答No.2

  A   B   C  D  E   F   G   H 1 data data data 2   1   2   1   TRUE TRUE TRUE TRUE 3   2   4   3 4   3   6 5   2   8 6   3 7   4 8 9 1.セル E2 に式 =$A2<>OFFSET($B$1,COLUMN(A$1),) を入力して、此れをB列のデータ   個数分(上の例では4個)になるように右方に(セル H2 まで)ドラッグ&ペースト 2.範囲 A1:A100 を選択 3.[データ]→[フィルタ]→[フィルタオプションの設定]を実行 4.“指定した範囲”に目玉入れ 5.[リスト範囲]ボックス内が $A$1:$A$100 と表示されていることを確認 6.[検索条件範囲]ボックス内にマウスカーソルを置いて、範囲 E1:H2 を撫で撫で   (→表示は $E$1:$H$2 となる) 7.[抽出範囲]ボックス内にマウスカーソルを置いて、セル C1 をチョーン   (→表示は $C$1 となる) 最後に、“重複するレコードは無視する”にチェックを入れて[OK]をクリック

  • sige1701
  • ベストアンサー率28% (74/260)
回答No.1

C1=INDEX(A:A,SMALL(IF((MATCH($A$1:$A$6,$A$1:$A$6,0)=ROW($A$1:$A$6))*(COUNTIF($B$1:$B$4,$A$1:$A$6)=0),ROW($A$1:$A$6)),ROW())) 配列数式です

関連するQ&A