• ベストアンサー

エクセルによるデータマッチング

エクセルのデータが2つありまして データ(1)が在庫のデータが一律に作られてます。 A列→商品番号 B列→商品名 C列→商品の内容 D列→商品状態 E列→値段となっております。 データ(2)には A列→売れた商品番号 があります。 この二つで データ(2)でデータ(1)にあるものが あるとき (データの一致をさせるのはA列どうしを 行いたいです。) 空いている列 Gあたりに 『売り切れ』とゆう表示をいれたいのですが どのようにすればよいかまったく わかりません。 以前 http://www.okweb.ne.jp/kotaeru.php3?q=403702 のアドレスに 同じような質問がでていましたので それを参考にさせていただいて 試してみたのですが、できなく まったくの素人ですので どこをどうなおしたら良いかも まったくわからず困り果てていた ところです。 OSは98で エクセルは2000 です。 データ数が多いため手作業でやるのに 無理がでてきてしまいましたので こまっているところです。 ぜひともよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ki-aaa
  • ベストアンサー率49% (105/213)
回答No.1

マクロでよければ、次のようになります。 使用しているシート名タブ(Sheet1とかSheet2)を右クリックし、「コードの表示」を選択します。 [挿入]→[標準モジュール] Option Explicit がでるので、その下に'***から'***までをコピーします。 マクロの実行方法。 [ツール]→[マクロ]→[マクロ]→[実行するマクロを選択]→[実行] '*** Sub test01() Dim 最終行1, 最終行2 As Integer Dim 行1, 行2 As Integer 最終行1 = Worksheets(1).Range("A65536").End(xlUp).Row 最終行2 = Worksheets(2).Range("A65536").End(xlUp).Row Worksheets(1).Activate 'マクロ実行画面を表示しない Application.ScreenUpdating = False For 行2 = 2 To 最終行2 For 行1 = 2 To 最終行1 If Worksheets(2).Range("A" & 行2) = Range("A" & 行1) Then Range("G" & 行1) = "売り切れ" 行1 = 最終行1 End If Next 行1 Next 行2 End Sub '*** データ(1)は一番左のシートです。 データ(2)は二番目のシートです。 データは、二行目から入っているものとします。

syousyou
質問者

お礼

本日、昨日実行をそのままにしましたところ 朝に終わってました。 本当に本当にありがとうございました。 いままで、手作業でやっていたことを考えると 涙がでそうでした。 しみじみと、パソコンはすごいなと、、、 原始人のようですが(笑) 今後もたぶんこの手の質問を ださせていただくと思いますので またお世話になるかもしれません。 今後ともよろしくお願いします。

syousyou
質問者

補足

早速のお答えまことにありがとうございます。 さっそく、本日試しにやらせていただきました。 試しのファイル(軽いもの) にて、テストをさせていただきました ところ見事できました。すばらしいです。 さっそく本番に適用してみたところ 3時に始めまして・・・ 現在もまだ終了しません。。。 ちなみに、データは もとの在庫のデータ3万件 マッチングされるデータ1万件 そうすると処理とゆうものは どれぐらいかかるものなのでしょうか。。。 もしくは、、、データを分けて マッチングさせて方がよろしいのでしょうか。 またの質問となってしまいすみませんが ぜひともよろしくお願いします。 あ、補足ですが 在庫データと売り切れデータなのですが いったん新しいファイルに 貼り付けなおして処理をしました。 その際にファイル名は特につけずに 新規のまま処理を開始しました。 在庫データはsheet1へコピー 売り切れデータはsheet2へコピー そして、ご説明いただいた通りの やり方をさせていただきました。 このやり方で問題なかったでしょうか?

その他の回答 (2)

  • Hageoyadi
  • ベストアンサー率40% (3145/7860)
回答No.3

Sheet2のA列に入力した商品番号が、Sheet1のA列にあるかどうかで「売り切れ」を判別する、という意味でよろしければ、 Sheet2のB列に =IF(COUNTIF(Sheet2!A:A,A2)>=1,"売り切れ","")

syousyou
質問者

お礼

お答えありがとうございます。 現在、ためしに マクロ にて試させていただいている途中です。 お答えありがとうございました。

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

例えばSheet1に商品番号-在庫数のデータが 商品番号 在庫数 1 10 2 0 3 20 4 0 あるとして Sheet2のA1に商品番号を入力するとして B1に関数式 =IF(VLOOKUP(A1,Sheet1!$A$2:$B$5,2)=0,"在庫無し",VLOOKUP(A1,Sheet1!$A$2:$B$5,2)) を入れるのはどうですか。 こう言うご質問ではないのでしょうか。

syousyou
質問者

お礼

お答えありがとうございます。 現在、ためしに マクロ にて試させていただいている途中です。 お答えありがとうございました。

関連するQ&A

専門家に質問してみよう