- ベストアンサー
EXCEL データの検索・抽出
シート1と2に同じようなデータがあり A B C D E F 1 001 100 りんご 1個 @100 \100 2 001 101 みかん 1個 @110 \110 3 002 200 なし 2個 @120 \240 4 002 201 かき 3個 @130 \360 といったように最初にコードがあり、その中に違うコードがあるのですが、これを1行ずつ見比べて無いデータ、数値が違う(個数や単価)データを抽出したいのです。 シート1と2のデータは並び方もバラバラでシート1にあるデータが2にないデータもあります(そのデータは特に必要ありません) ※無いデータと数値が違うデータは別々に抽出したいので最後にオートフィルタがかけられるようにしたいです。 EXCEL2000です。宜しくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#3の訂正です。 2番目のVLOOKUPがSheet3になってしまってます。 修正版↓ =CHOOSE(IF(COUNTIF(Sheet2!C:C,C1)=0,5,(VLOOKUP(C1,Sheet2!C:D,2,0)<>D1)*1+(VLOOKUP(C1,Sheet2!C:E,3,0)<>E1)*2+1),"○","個数","単価","個数・単価","無")
その他の回答 (3)
A列のコードが、片方のシートは表示形式で000としてあるのに、 もう片方のシートは文字列になってたりしませんか? C列をキーにしてみます。 =CHOOSE(IF(COUNTIF(Sheet2!C:C,C1)=0,5,(VLOOKUP(C1,Sheet2!C:D,2,)<>D1)*1+(VLOOKUP(C1,Sheet3!C:E,3,)<>E1)*2+1),"○","個数","単価","個数・単価","無") データがないと「無」、個数のみ違うなら「個数」、単価のみ違うなら「単価」、両方違うなら「個数・単価」、違いが無ければ「○」と、表示されます。
お礼
ありがとうございます。 明日会社に行ったときに試してみます。
- mu2011
- ベストアンサー率38% (1910/4994)
次の方法は如何でしょうか。 ・仮に各シートの表範囲は100行 ・空き列に判定数式を設定して、各シート別にオートフィルタで抽出 コードなしは「1」、データ相違は「2」として (1)シート1のG列に以下の数式を設定して下方向にコピー(範囲 =IF(SUMPRODUCT((sheet2!$A$1:$A$100=A1)*(sheet2!$B$1:$B$100=B1)),IF(SUMPRODUCT((sheet2!$A$1:$A$100=A1)*(sheet2!$B$1:$B$100=B1)*(sheet2!$D$1:$D$100=D1)*(sheet2!$E$1:$E$100=E1)),"",2),1) (2)シート2も同様(但し、上記数式のシート名をSHEET2→sheet1)
お礼
ありがとうございます。 No.1と同じくうまくいきませんでした。 こちらは全て1が出てきます。
- mshr1962
- ベストアンサー率39% (7417/18945)
A列のみ比較なら =COUNTIF(Sheet2!A:A,A1) で存在しないと0、存在する場合はその数を表示 複数列の場合は =SUMPRODUCT((Sheet2!$A$1:$A$99=A1)*(Sheet2!$B$1:$B$99=B1)) のように各列毎、行範囲を設定して存在しなければ0、存在する場合はその数を表示 まあ後者の場合、存在しないということはどこかが違うわけで個数を比較したいなら =SUMPRODUCT((Sheet2!$A$1:$A$99=A1)*(Sheet2!$B$1:$B$99=B1)*(Sheet2!$D$1:$D$99<>D1)) としてA:B列が同じでD列のみ違うかをチェックするとかすればいいのでは?
お礼
ありがとうございます。 やってみたのですがうまくいきませんでした。 =SUMPRODUCT((Sheet2!$A$1:$A$99=A1)*(Sheet2!$B$1:$B$99=B1)*(Sheet2!$D$1:$D$99<>D1)) とすると全て0が出てきます。 何がいけないのでしょうか?
お礼
回答ありがとうございます。 遅くなり申し訳ありません。 中々検証する時間がとれないため一旦締め切ります。 ありがとうございました。