- ベストアンサー
EXCELで同じ項目を持つ2種類のデータのうち合致するデータを抽出する方法
- EXCELで同じ項目を持つ2種類のデータのうち、ある項目が合致するデータを抽出する方法について説明します。質問者は、自社が納品したデータと納品先が作成した受領データを比較し、納品数量の食い違いを発見したいと考えています。質問者はマクロを使用せず、関数のみで抽出する方法を知りたいとしています。
- 以下の手順で納品数量の食い違いを検出することができます。まず、自社が納品したデータと納品先が作成した受領データを同じブック(シート)に貼り付けます。次に、伝票番号と商品コードが合致するデータを抽出します。最後に、数量が異なるデータを抽出します。EXCELの関数を使用することで、この処理を実現することができます。
- EXCEL2003を使用している場合、以下の関数を使用して納品数量の食い違いを検出することができます。まず、VLOOKUP関数を使用して伝票番号と商品コードが合致するデータを抽出します。次に、IF関数を使用して数量が異なるデータを抽出します。このように、関数を組み合わせることで、マクロを使用せずに納品数量の食い違いを検出することができます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! No.1さんとまったく同様の回答で、重複するかと思いますが、 ExcelでSheetを作成してしまいましたので、 回答させていただきます。 ↓の画像で上側が自社Sheet(Sheet1)で、下側が納品先Sheet(Sheet2)になります。 両Sheet共、D列を作業用の列とさせてもらい、 D2セルに =CONCATENATE(A3,B3,C3) という数式を入れ、フィルハンドルの(+)マークでダブルクリック またはオートフィルで下へコピーします。 Sheet1のE3セルに =IF(OR(D3="",COUNTIF(Sheet2!$D$3:$D$1000,D3)),"","×") という数式を入れ、これまたフィルハンドルでダブルクリックかオートフィルで下へコピーします。 これでSheet1・2でデータが違う行だけに「×」が表示されます。 以上、参考になれば幸いです。m(__)m
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
例データ Sheet1 A列 B列 C列 伝票番号 数量 1 12 2 4 #N/A 3 6 相違 ーー Sheet2(受領データ) A列 B列 伝票番号 数量 1 12 3 5 Sheet1のC2に =IF(B2=VLOOKUP(A2,Sheet2!$A$1:B$100,2,FALSE),"","相違") と入れて下方向に式を複写。 #N/Aは見つからず(受け取りの返事が無い) これも「見つからず」と出したいときは=IF(ISERROR(VLOOKUP(同じ 関数式),"",IF(B2=VLOOKUP(同じ関数式),"","相違") 相違は受け取り数相違。 ーー ただし上記回答では伝票番号で比べているが、普通は1伝票番号で多数品を納めるのでは? だから実例を挙げて、説明し質問しないとだめ。 もし伝票番号+商品コードでチェックするなら、空き列に伝票番号+商品コードの文字列を作り、VLOOKUP関数(FALSE型)で探す。そのときTEXT関数などで伝票番号7桁+商品コード6桁という風に定桁式になるように数字文字列を作ること。 1-01と10-1が同じにならないようにね。 ーー 余分なことかもしれないが、 相手先が検収数量をわざわざ書いて返してくるのかな?実際界では普通合っておれば、そのまま検収印を押して返送するがやっとでは?合わないときだけ文句や問い合わせが入るとか。
お礼
早速のご回答、誠にありがとうございます。 説明不足で申し訳ございません。 今回の相手先は、1伝票番号につき1明細と決まっているので本来ですと伝票番号のみでマッチングすればいいのですが ごく稀に伝票番号が1周し、同一伝票番号で違う商品コードが発生するため両方をマッチングする方法をお聞きしました。 ちなみに伝票番号は7桁の数字のみで商品コードはJANコードで13桁の数字です。このあたりも説明不足でした。 imogasi様の紹介していただいた伝票番号のみのマッチングも参考にさせていただきます。 後日結果にて締め切り、評価させていただきます。まずはお礼まで。 >余分なことかもしれないが、 >相手先が検収数量をわざわざ書いて返してくるのかな?実際界では普通合っておれば、そのまま検収印を押して返送するがやっとでは?合わないときだけ文句や問い合わせが入るとか。 その通りですよね。私もそう思います。ただ、今回の相手先様の検収方法は自社からの納品の際、納品伝票は添付しない。 そして相手先の方ではハンディでのみ検品作業。 そしてその結果のみを自社にデータを送る。 自社でそのデータを検証し、相違部分を相手先に調査依頼をかけるという流れなのです。 まぁこういうところも中にはあるのです。。。
- mame9999
- ベストアンサー率44% (90/203)
1つの伝票No.に同一商品コードが2行出てこないと仮定してですが、 1,伝票No. & 商品コード で伝票No.と商品コードを連結した列を作る (両方のエクセルシートともです) 2,vlookup関数をつかって片方のシートからもう片方のシートを探す 3,Vlookup関数の第3パラメータ目を納品数量とする 4,Vlookup関数の第4パラメータ目をFALSEとする すると結果は 存在すれば、納品数量存在しなければ#N/Aが帰るはずです 納品数量同士を比較し違っていればエラー もしくはVlookup関数の答えが#N/Aならエラー というIF関数を書いてあげれば差異が抽出できると思われます これを、両方のシートで行ってください (AシートにあってBシートにない BシートにあってAシートにない という両方の状況に対応するため) こんな感じでいかがでしょうか
お礼
早速のご回答、誠にありがとうございます。 早速お教えいただいた方法で試して見たいと思います。 結果とともに後日締め切り、評価のほうさせていただきます。 まずはお礼まで。
お礼
早速のご回答、誠にありがとうございます。 関数だけでなく、数式や図まで載せていただき恐縮です。 数式など知らない関数もありますので勉強して試してみます。 使ってみて、使いやすさなどを考えて後日評価させていただきます。 まずはお礼まで。