プロが教える店舗&オフィスのセキュリティ対策術

下の表のような在庫管理表の作成を考えてます。
B列:受入数
C列:受け入れた部品の有効期限
D列:使用数
E列:使用した部品の有効期限
をそれぞれ入力してます。

H3に「=UNIQUE(SORT(FILTER(C:C,(C:C>=today())),1,1),false,false)」でC列の今日以降の有効期限の日付を抽出してます。
I列に「=SUMIF(C:C,"="&$H3,B:B)-SUMIF(E:E,"="&$H3,D:D)」で有効期限別の在庫数を算出るようにしました。
E列の有効期限の入力を入力規則でH2:H5を参照したかったため、上記のようにしました。

H3で抽出する日付の条件に「今日以降」に加えて「有効期限の在庫数が0になった日付は除外する(有効期限の在庫数が0以外を抽出)」としたい対場合は、どうすればよいでしょうか?
ご教示のほど、宜しくお願い致します。

「Excelの関数(FILTER関数)につ」の質問画像

A 回答 (2件)

No1です。



もっと簡単な式にできましたね。
=SORT(UNIQUE(FILTER(C:C,SUMIF(C:C,C:C,B:B)>SUMIF(E:E,C:C,D:D),"")))

ただし、このままだとまともに全行分計算するので、無駄に計算負荷がかかります。
行範囲を限定してあげることで、大幅に負荷軽減を図れると思います。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます!
希望していた事が実現できました!
また負荷軽減へのアドバイスもありがとうございます。
参考にさせていただきます。

お礼日時:2023/08/01 15:27

こんばんは



ご提示の式のでは列全体を指定しているので、抽出対象にタイトル行も含まれてしまうと思いますけれど・・?

それは別として、複雑なことを一気にやろうとすると、式が複雑で長くなりがちで、メンテナンス性も悪くなります。
ご提示のH:F列の結果を、もう一度FILTERに掛ければお求めの結果になると思いますが、そちらの方がメンテナンス性は良いのではないでしょうか。


どうしてもまとめて行いたければ、上記の内容をそのまま式にすれば良いだけのように思います。
例えば、H3セルに
=SORT(UNIQUE(FILTER(FILTER(C:C,C:C>=TODAY(),""),SUMIF(C:C,FILTER(C:C,C:C>=TODAY(),""),B:B)>SUMIF(E:E,FILTER(C:C,C:C>=TODAY(),""),D:D),"")))
とか。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!