• 締切済み

EXCELで追加データのみを抽出したい

シート1とシート2に客先リストがあります。シート1は新リストで、シート2は旧リストです。 旧から新へ追加した客先が数十件あるのですが、追加された客先だけ抽出することはできないでしょうか?  

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.3

シート1及び2のA列には顧客名が、B列には電話番号が有るとします。このA列とB列のデータがシート1とシート2で一致していれば同一の顧客であると判断する場合にはそれぞれのシートの余分な列、例えばF列を作業列としてそれぞれのシートのF2セルに次の式を入力して下方にオートフィルドラッグします。なお、1行目には項目名が有るとします。 =A2&B2 その後にシート1だけにデータがありシート2にはデータがない行には、例えば上の行から番号を振るのでしたら、作業列としてシート1のG1セルには抽出作業列とでも入力し、G2セルには次の式を入力して下方にオートフィルドラッグします。 =IF(A2="","",IF(COUNTIF(Sheet2!F:F,F2)=0,MAX(G$1:G1)+1,"")) G列に数値があるデータが追加された顧客ということになります。 フィルター操作で0以上を選択すればそれらのデータのみが表示されますね。 フィルタ操作をすることなく例えばシート3にそれらのデータのみを表示させるのでしたらシート3の1行目は項目名として、A2セルには次の式を入力して右横方向にオートフィルドラッグしたのちに下方にもオートフィルドラッグします。 =IF(OR(A$1="",ROW(A1)>MAX(Sheet1!$G:$G)),"",INDEX(Sheet1!$A:$E,MATCH(ROW(A1),Sheet1!$G:$G,0),COLUMN(A1))) 関数を使うことでフィルタなどの操作を行うことなく新しく追加されたデータのみをシート3に表示させることができます。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

目的にもよりますが、毎日差分だけを抽出して、そのデータを抽出して処理したいような場合は、関数で表示する方が便利なこともあります。 すなわち、新リストがSheet1で旧リストがSheet2の場合、A列の新たに入力されたデータは以下のような関数を入力して下方向及び右方向にオートフィルすれば(文字列として)表示できます。 =INDEX(Sheet1!A:A,SMALL(INDEX(ISNUMBER(MATCH(Sheet1!$A$2:$A$100,Sheet2!$B$2:$B$100,0))*1000+ROW(Sheet1!$A$2:$A$100),),ROW(A1)))&"" ただし、配列数式を多用すると再計算に時間がかかりシートの動きが重くなりますので、例えばA列のデータが重複のないデータであれば、B列以降は、A列の値を検索値として参照するVLOOKUP関数を用いるなど、数式を適宜工夫してください。 IF(A2="",VLOOKUP(A2,Sheet1!$A$D,COLUMN(B1),0)

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

ご利用のエクセルのバージョンが不明なので手順等を詳しくお話しできませんが,データメニューのフィルタから「フィルタオプションの設定」を使います。 新リストを開いてフィルタオプションの設定を開始,新リストを「リスト範囲」,旧リストを「検索条件範囲」として「変更されていない行」をまず抽出,それを「行削除」してからフィルタを解除すると,「変わっていた行」だけが抽出されて残ります。 参考: http://www.eurus.dti.ne.jp/~yoneyama/Excel/filter3.htm http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-filter2.html

rewqfdsavcxz
質問者

お礼

回答ありがとうございました。 助かりました。

関連するQ&A