- ベストアンサー
検索について教えてください
- セルからロットNoを入力すると数量が出る方法を教えてください
- 在庫管理システムでの検索方法について教えてください
- 日付とロットNoを使用して在庫数量を検索する方法を教えてください
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
◆No1,No2のmaronです ◆すみませんでした、訂正します J2=IF(COUNTIF(C2:G100,I2),INDEX((H1:H100,D1:D100),SUMPRODUCT(N(MAX((MAX((C2:G100=I2)*A2:E100)=A2:E100)*(C2:G100=I2)*ROW(A2:A100)))),1,IF(INDEX(G1:G100,SUMPRODUCT(N(MAX((MAX((C2:G100=I2)*A2:E100)=A2:E100)*(C2:G100=I2)*ROW(A2:A100)))))=I2,1,2)),"") ★この式は「配列数式」です。式を入力後、Ctrl+Shift+Enter をおして、式を確定させてください。 ★確定すると、式の両端に{ }がつきます。
その他の回答 (3)
- maron--5
- ベストアンサー率36% (321/877)
◆先程の回答は、誤りでしたので無視してください
- maron--5
- ベストアンサー率36% (321/877)
◆これでいかがでしょうか? ★#1さん同様、「入庫、出庫で最終日が同じなら出庫側の在庫を優先して表示します」 A B C D E F G H I J 1 日付 入庫数 ロットNo 在庫 日付 出庫数 ロットNo 在庫 2 07/3/1 100 080101 100 07/3/2 50 080102 50 080101 80 3 07/3/1 100 080102 100 07/3/6 30 080105 20 4 07/3/5 50 080105 50 07/3/7 20 080101 80 5 07/3/7 50 080102 0 J2=IF(COUNTIF(C2:G100,I2),INDEX((H1:H100,D1:D100),SUMPRODUCT(N(MAX(((C2:G100=I2)*ROW(A2:A100))))),1,IF(INDEX(G1:G100,SUMPRODUCT(N(MAX(((C2:G100=I2)*ROW(A2:A100))))))=I2,1,2)),"")
- zap35
- ベストアンサー率44% (1383/3079)
この質問を拝見するのは3回目に思います。すみませんが、毎回肝心なことは書かれていませんね。今回もJ列にはどのようなルールで数値を検索するのかが説明されていません。screamsさんには自明のことでも、第三者は分からないことなのです。 想像を働かせると、80101というロットナンバーが入庫欄(A~D列)、出庫欄(E~H列)の両方に現れるとき、日付の新しい方の在庫数をJ列に表示するという意味ですか? また私の想像が当たっているなら、I列に指定したロットの最終入庫日と最終出庫日が同じ日だったら入庫欄の在庫、出庫欄の在庫のどちらをJ列に表示すればよいのでしょう。 とりあえず式を書きます。入庫、出庫で最終日が同じなら出庫側の在庫を優先して表示します。検索するロットナンバーはI2セルにあるものとします。最初は式を分割して説明します 最終入庫日は =INDEX($A$1:$A$500,MAX(INDEX(($C$2:$C$500=I2)*ROW($C$2:$C$500),))) その時の在庫(入庫側)は =INDEX($D$1:$D$500,MAX(INDEX(($C$2:$C$500=I2)*ROW($C$2:$C$500),))) 最終出庫日は =INDEX($E$1:$E$500,MAX(INDEX(($G$2:$G$500=I2)*ROW($G$2:$G$500),))) 出庫側の在庫数は =INDEX($H$1:$H$500,MAX(INDEX(($G$2:$G$500=I2)*ROW($G$2:$G$500),))) になります。 あとは日付が大きい方を判断して在庫数をJ列に求めれば良いのですが、これを一つの式にすると以下になります。 =IF(AND(COUNTIF($C2:$C500,I2)=0,COUNTIF($G2:$G500,I2)=0),"対象なし",IF(IF(COUNTIF($C2:$C500,I2)>0,INDEX($A$1:$A$500,MAX(INDEX(($C$2:$C$500=I2)*ROW($C$2:$C$500),))),0)>IF(COUNTIF($G2:$G500,I2)>0,INDEX($E$1:$E$500,MAX(INDEX(($G$2:$G$500=I2)*ROW($G$2:$G$500),))),0),INDEX($D$1:$D$500,MAX(INDEX(($C$2:$C$500=I2)*ROW($C$2:$C$500),))),INDEX($H$1:$H$500,MAX(INDEX(($G$2:$G$500=I2)*ROW($G$2:$G$500),))))) 式が長くなってしまってすみません。データが500行以上あるなら範囲は置換してください