- ベストアンサー
エクセルの関数に関する質問です
エクセルで 1行目に数字4つ(1列に数字1つずつ)と 2行目に数字4つ入力した際、 1行目と2行目で重複していない数字を それぞれの行の5列目以降に表示させるには どのような関数にすれば良いでしょうか? 具体的に何がしたいというと 例えば 2 4 5 6 3 5 4 7 と入力した場合 2 4 5 6 3 7 3 5 4 7 2 6 と表示させたいのです。 どうぞよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
A B C D E F G H 1 2 4 5 6 3 7 2 3 5 4 7 2 6 1.下記の式を入力 E1: =IF(COUNTIF($A1:$D1,A2),"",A2) E2: =IF(COUNTIF($A2:$D2,A1),"",A1) 2.範囲 E1:E2 を右方にズズーッと複写 3.範囲 E1:H2 を選択 4.[編集]→[ジャンプ]→[セル選択]を実行 5.“数式”だけに目玉入れ、その配下の“文字列” のみに「レ」印を残して[OK]をクリック 6.[編集]→[削除]を実行 7.“左方向にシフト”に目玉を入れて[OK]をクリック
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
関数では超難問ですね。 関数には不向きな問題だということ。 VBAでやれば、素直にプログラムが組めます。 #1に劣らず複雑ですが、配列数式でやってみました。 例 第2行 2 4 5 6 第3行 3 1 4 7 ーー F2に =INDEX($A$3:$D$3,1,SMALL(IF(ISERROR(MATCH(A3:D3,OFFSET($A$2,0,0,1,4),0)),COLUMN(A3:D3),99),COLUMN(A3:D3))) を入れてShift+CTRL+ENTERを同時押し。 F2の式をI2まで式を複写。 F3に =INDEX($A$2,1,SMALL(IF(ISERROR(MATCH(A2:D2,OFFSET($A$3,0,0,1,4),0)),COLUMN(A2:D2),99),COLUMN(A2:D2))) と入れてShift+CTRL+ENTERを同時押し。 F3の式をI3まで式を複写。 3 1 7 #REF! 第3行が第2行にあるか 2 5 6 #REF! 第2行が第3行にあるか ーー 見つからないセルがデータ数より少ないと#REFが出るセルがあるが、消し方は考えて見ます。式がさらに複雑になるのでとりあえずここで止めます。 ーー 既回答のように、左へ詰めずに結果を出し、後から不要セルを削除するなら、式は簡単ですね。 ーー 私はMATCH関数を使ったが、COUNTIF関数の方が、式の文字数は少なくなりますね。
- zap35
- ベストアンサー率44% (1383/3079)
A5の式は =LARGE(INDEX((COUNTIF($A$1:$D$1,$A$2:$D$2)=0)*$A$2:$D$2,),SUMPRODUCT(COUNTIF($A$1:$D$1,$A$2:$D$2))-COLUMN(A1)+1) A6の式は =LARGE(INDEX((COUNTIF($A$2:$D$2,$A$1:$D$1)=0)*$A$1:$D$1,),SUMPRODUCT(COUNTIF($A$2:$D$2,$A$1:$D$1))-COLUMN(A1)+1) になると思います。それぞれ右方向にコピーします。 ただしこの式では個数分以上にコピーすると#N/A!エラーになります。それを回避するには以下のような式になります。 A5の式は =IF(SUMPRODUCT(COUNTIF($A$1:$D$1,$A$2:$D$2))-COLUMN(A1)>=0,LARGE(INDEX((COUNTIF($A$1:$D$1,$A$2:$D$2)=0)*$A$2:$D$2,),SUMPRODUCT(COUNTIF($A$1:$D$1,$A$2:$D$2))-COLUMN(A1)+1),"") A6の式は =IF(SUMPRODUCT(COUNTIF($A$2:$D$2,$A$1:$D$1))-COLUMN(A1)>=0,LARGE(INDEX((COUNTIF($A$2:$D$2,$A$1:$D$1)=0)*$A$1:$D$1,),SUMPRODUCT(COUNTIF($A$2:$D$2,$A$1:$D$1))-COLUMN(A1)+1),"")
お礼
ありがとうございました。 ただ、色々数を入力してみると うまくいかないパターンもありました。 やはりエクセルには向かない問題と言うことですよね。