• 締切済み

2つのデータを照合したいです

お客様から送られてくるエクセルの注文データと、自社で管理している注残データを照合し、お客様の注文データにあって自社注残データにないもの=新規注文データのみを別シートに抽出したいです。 これを行うにはマクロでいいのでしょうか? エクセルのシート1にユーザー注文データ。 シート2に自社注残データ。 この状態でマクロ実行→新たにシート3が作られ、照合できない新規注文データのみを抽出。 ということをイメージしています。 シート1(ユーザー注文データ)のI列に型式、F列に数量が入っています。 シート2(自社注残データ)のI列に型式、J列に数量が入っています。 この型式・数量の2項目を照合したいのですが、ユーザーデータには型式の頭に「P (Pと半角スペース)」が全数ついています。 このP+スペース以降の型式が照合対象です。 型式・数量が一致しないものを新たにシート3を作成しそちらに抽出したいです。 データ数は大体100行程度。 シート1・2共に1・2行には項目タイトルが入っているので、3行目からデータが始まります。 自分で作成しようとVBAの本を買ってきて勉強中なのですが、超初心者なので、まだまだ時間がかかりそうです。 どなたかお知恵を貸していただければと思います。 よろしくお願いいたします。

みんなの回答

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

No1です。一応 一般機能を利用した案紹介しておきます。 シート3のA3に =REPLACE(シート1!I3,1,2,"")&シート1!F3  下フィル これで、注文データの型式からP+半角の除いた文字と数量をつなげた一覧が出来ます。 B3セルに =シート2!I3&シート2!J3  下フィル 注残データの型式と数量をつなげた一覧がでます。 C3セルに =IF(COUNTIF(B:B,A3),"",ROW()) 下フィル 注残データに一致する内容がない注文データの行に行番号がでます。 (新規注文分には番号が出る) D3セルに =INDEX(シート1!I:I,SMALL(C:C,ROW(A1)),1) 下フィル F3セルに =INDEX(シート1!F:F,SMALL(C:C,ROW(A1)),1) 下フィル で、新規注文の型式 と 数量が一覧表になると思います。 注文データと注残データをシート1、シート2に貼り付けると自動で シート3のD列 F列に結果が出ますので、 後はコピィ&形式に選択して貼り付け を実行して希望の部分に追加してみてください。 コピペの部分でしたら マクロの記録でも十分ではないでしょうか。

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

>どなたかお知恵を貸していただければと思います。 質問者が勉強しないと、他人が知恵を貸す段階で無いと思います。 VBAで課題を解決するには、(1)VBAのVB部分の文法、(2)エクセルVBAのプロパティ、メソッド、関数(3)プログラムに仕立てるための処理ロジック、さらに進むとアルゴリズム(4)特殊な周辺問題などの勉強があります。 質問者は(1)と(2)の代表的なもの少数を勉強しようとしているのでしょうが、難しいのは、意外に言われてなくて、本にもかかれてない(3)の訓練なのです(>VBAの本を買ってきて勉強中なのですが、ー>でもなかなか見つからないでしょう)。これは良き環境や指導者がまわりにいないと、経験して学んでいくと何年単位の期間が要ります。色んなタイプがあり、人によって、タイプ(類型)として重要とする点が違うのです。 質問の課題に取り組むのは少し早すぎます。金槌とカンナの使い方を学んだ段階で、小屋や家を立てたいといっているようなものでしょう。 もっとVBAの小品(数行で出来る事項)を勉強して、その上に(3)の課題(例題)に進む。その課題は自分で見つけなければならない状態です。 === 質問で気になるのは、エクセルは(VBAは)シート、セルの行・列が具体的に(例えばB1セルとかA1:A10にとか)判らない(書いてない)と、VBAコードが具体的に示せないことです。質問にはそれが1つも書いてないです。回答者の立場に回れば判ることです。 本件は丸投げ的で、コードを回答することは、丸投げは規約上で良くないのですが、それらが書いてないのでコードの点では示せません。 具体的に簡素化して書くようにしましょう。 ーー あくまで(3)のロジックの1つですが「マッチング」という技法があります。 「ファイル マッチング」で照会すれば、(他の意味の混じり物も出すが、) http://go2vb.cocolog-nifty.com/blog/2007/05/post_5ed4.html などのような手法もあります。 (コボラー云々とあるように古典的なロジックなのですが、バッチ処理にはお勧めです。)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

>型式・数量が一致しないものを新たにシート3を作成しそちらに抽出したいです。 たまたま同じ型式が同じ数量の注文があった場合はどうしますか。 会社として取り扱うのであれば きちんと 重複しない注文番号 或いは  発注日付を入れて 取り扱うべきと思います。 あと アクセスがインストールされているパソコンはないでしょうか アクセスの一般機能で エクセルファイルへのテーブルのリンク 不一致クエリ 追加クエリ について勉強してもらえればそれだけで実現可能です。 VBA勉強するくらいであれば、アクセスの一般機能を勉強したほうが早いかもしれません。

関連するQ&A