• 締切済み

EXCELのデータ比較をして抽出

EXCELで2つのシートを比較してSheet1にあってSheet2にないものをSheet3に出したいのですが、どうやったらいいですか? Sheet1は deta1 date2 date3 12222 kkkkk mmmmmm 13333 ddddd ssssss Sheet2は date1 date2 date3 12222 xxxxx vvvvvv 14444 yyyyy jjjjjj となっていてA列(date1)を比較して Sheet3に、 13333 ddddd ssssss を表示させたいと思っています。

みんなの回答

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

私がいつも答えている(imogasi方式)でできます。 例データ Sheet1の A2:C9 ただしC列は関数の結果です。 A列  B列   C列 AS12344 x 1 a2345 y aaass2 z aaass2 e 2 ssdf23 r wert34 t 3 wefg4 u qwe234 v 4 ーーーー Sheet2のA2:A7に a2345 aaass2 aaass3 ssdf23 wert35 wefg4 ーーーーー Sheet1の C2に =IF(ISERROR(MATCH(A2,Sheet2!$A$2:$A$100,0)),MAX($C$1:C1)+1,"") と入れてC9まで複写する。 結果は上記のC列の通り。 Sheet3に行って A1に =INDEX(Sheet1!$A$2:$B$10,MATCH(ROW()-1,Sheet1!$C$2:$C$10,0),COLUMN())と入れて、B2に式を複写する。 A2:B2を範囲指定して、B2で+ハンドルを出し、A5:B5まで引っ張る。 結果 A2:B5は AS12344 x aaass2 e wert34 t qwe234 v となる。 エラーを出させない方法は、今回は略しますが、OKWEBでimogasi方式で照会していただければ載せている回答もあります。

  • zenjee
  • ベストアンサー率47% (50/106)
回答No.3

No.2zenjeeです。 No2の回答の記述に一か所誤記がありましたので、訂正させていただきます。 1行目の 「入力データはA2~C3以下と仮定して」は 「入力データはA2~C2以下と仮定して」 でした。すみません。

  • zenjee
  • ベストアンサー率47% (50/106)
回答No.2

Sheet1~3とも1行目は見出行で、入力データはA2~C3以下と仮定して、 1,Sheet3のA2に =IF(ISERROR(MATCH(Sheet2!A2,Sheet1!A:A,0)),Sheet1!A2,"") 2,Sheet3のB2に =IF(OR($A2="",$A2=0),"",VLOOKUP($A2,Sheet1!$A:$C,2,FALSE)) 3,Sheet3のC2に =IF(OR($A2="",$A2=0),"",VLOOKUP($A2,Sheet1!$A:$C,3,FALSE)) とそれぞれ入力し、A2:C2を下方にコピーします。 これで該当のデータがSheet3に返されますが、途中空行が出来るので、これを解消するためにデータがある行を選択してソートするか、又はB列を選択して、データ→フィルタ→オートフィルタで空白以外の行を選び、該当分について何らかの作業が必要なときは、編集→ジャンプ→セル選択で「可視セル」にチェックすると非表示のセルを含まない作業が可能です。 なお、前記1~3の作業で、空白行が出ないよう行詰めでで答を返す方法もありますが、ここでは省略します。

回答No.1

質問にある結果の通りに答えを出すとすれば、 VBAでプログラムを書きますが、下のような VLOOKUP関数を使う方法はいかがでしょうか。 下のように、D列にVLOOKUP関数を入れます。 Sheet1 -A列- -B列- -C列-- --D列-- 12222 kkkkk mmmmmm =VLOOKUP(A1,Sheet2!$A:$A,1,FALSE) 13333 ddddd ssssss =VLOOKUP(A2,Sheet2!$A:$A,1,FALSE) Sheet2 -A列- -B列- -C列-- --D列-- 12222 xxxxx vvvvvv =VLOOKUP(A1,Sheet1!$A:$A,1,FALSE) 14444 yyyyy jjjjjj =VLOOKUP(A2,Sheet1!$A:$A,1,FALSE) Sheet1, Sheet2ともに、A列でソートしてから結果を見て下さい。 Sheet1は -A列- -B列- -C列-- --D列-- 12222 kkkkk mmmmmm 12222 13333 ddddd ssssss #N/A と表示されます。 Sheet2に存在すれば、A列と同じ値がD列に表示されます。 Sheet2に存在しないものは、D列に#N/Aと表示されます。 Sheet2も同様に、 -A列- -B列- -C列-- --D列-- 12222 xxxxx vvvvvv 12222 14444 yyyyy jjjjjj #N/A と表示されます。 Sheet1に存在すれば、A列と同じ値がD列に表示されます。 Sheet1に存在しないものは、D列に#N/Aと表示されます。 いかがでしょうか。

関連するQ&A

専門家に質問してみよう