Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 7 Professional : Excel 2016)
2つのシートの在庫数を条件に応じて3つ目のシートに転記
投稿日時: 18/05/24 11:13:39
投稿者: つま

Sheet1~3までの3シートがあり、
 
Sheet1とSheet2には
A列:商品名
B列:在庫数
が入力されています。
 
Sheet3には
A列:Sheet1!A2のように、Sheet1の商品名をそのまま転記
B列:Sheet1とSheet2のB列を比較し、
 条件1:Sheet1の在庫数がSheet2の在庫数より500以上多かった場合のみ、
     Sheet2の在庫数を転記
 条件2:Sheet1の在庫数とSheet2の在庫数の差が500未満のとき、
     Sheet1の在庫数を転記
 条件3:Sheet1には存在するがSheet2には存在しない商品の場合、
     Sheet1の在庫数を転記
 条件4:Sheet2には存在するがSheet1には存在しない商品の場合、
     何もしない
 
これを満たすことのできる関数式があればご教示いただけますと幸いです。
 
補足ですが、
Sheet1は1週間毎に登録商品と在庫数が変動し、Sheet2は約半年ごとに変動します。
また、条件3と4にもあるように、Sheet1と2において商品名や全体の行数が一致していないため、
2つのシートにおけるセル番地が違うのが悩みどころです。(VLOOKUPなどを使えばok…?)
 
※できれば関数で解決したいところですが、VBAでしか解決できない内容であればそれでも構いません。

投稿日時: 18/05/24 11:22:16
投稿者: つま

引用:
これを満たすことのできる関数式があればご教示いただけますと幸いです。

 
ここで申し上げた関数式というのは、Sheet3のB列に入力する式のことです。
B1は表題を入力するため、式はまずB2に入力したあとオートフィルで下に3000行ほどコピーする予定です。
 
よろしくお願いいたします。[/quote]

回答
投稿日時: 18/05/24 14:36:23
投稿者: WinArrow
投稿者のウェブサイトに移動

 
Sheet3シートの
 セルA2
=Sheet1!A2
   
セルB2
=IF(COUNTIF(Sheet2!A:A,A2)>0,IF(Sheet1!B2-VLOOKUP(A2,Sheet2!A:B,2,FALSE)>=500,VLOOKUP(A2,Sheet2!A:B,2,FALSE),Sheet1!B2),Sheet1!B2)
   
A2〜B2を下へフィルドラッグ
  
 
最初のCOUNTIF関数でSheet2に存在するか判断します。
 条件4は、敢えて対応する必要なしと思います。
 

回答
投稿日時: 18/05/24 14:48:50
投稿者: Suzu

作業列を設けてはダメなの?
 
結局、A列では数式にてSheet1の値を取得しているのですから最終行までは判っているのだから
      B列もオートフィルで最終行は可能なのですよね。
 
なら、
Sheet1 B列を =Sheet1!B1
Sheet2 B列を =VLOOKUP(A1,Sheet2!A1:B4,2,FALSE)
で取得できますよね?
 
後は IF と 、ISErrorを使えば。。

投稿日時: 18/05/24 16:07:22
投稿者: つま

>> WinArrowさま
 
いただいた式で、こちらの希望していた動作が全て実現しました!
感謝感激です!!
 
 
>> Suzuさま
 
回答ありがとうございます!

投稿日時: 18/05/24 16:08:10
投稿者: つま

こちらの質問は解決済みです。