この人頭いいなと思ったエピソード

下記の条件の関数を知りたいです。(画像はサンプルです)

①在庫数・・・C列がA班、B班、C班の時はマイナス
②在庫数・・・C列が購入の場合のみプラス
③在庫数・・・C列が棚卸の時は数値はプラスもマイナスもしない。

④使用合計・・・C列の班に対応して、プラス。

④は『=SUMIF($C$3:$C$20,G2,$D$3:$D$20)』でなんとかなりました。

①,②のみなら『=SUMIF(C3:C20,"購入",D3:D20)-SUMIF(C3:C20,"<>購入",D3:D20)』ならば
希望通りできたのですが、③の棚卸を追加する方法がわかりません。

このようなことはできるのでしょうか?

「スプレッドシートの関数」の質問画像

A 回答 (2件)

>C列が棚卸の時は数値はプラスもマイナスもしない。


>③の棚卸を追加する方法がわかりません。

「棚卸の時は数値はプラスもマイナスもしない」という観念に囚われ過ぎていませんか?
ご質問者がお示しになった、数式
=SUMIF(C3:C20,"購入",D3:D20)-SUMIF(C3:C20,"<>購入",D3:D20)・・・・・・①
は「C列が【購入】のD列の合計から、C列が【購入】でないD列の合計をマイナスする」
という数式です。
つまり、①=【購入】-【購入以外】という数式になっています。
ここで、C列に【班名】【購入】【棚卸】しか登場しないとすると
①=【購入】-(【班名】+【棚卸】)
となるはずです。()を外すと
①=【購入】-【班名】-【棚卸】
となります。上記を変形すると
①+【棚卸】=【購入】-【班名】
となります。
もうおわかりかと思いますが、求めたいのは
【購入】-【班名】ですから
もともとご質問者がおお示しになった数式①に【棚卸】を加えればよいので、
添付画像①のように、

=SUMIF(C3:C20,"購入",D3:D20)-SUMIF(C3:C20,"<>購入",D3:D20)+SUMIF(C3:C20,"棚卸",D3:D20)

という数式を記述すればよいことになります。

----余談------
以下は余談です。あくまでも「余計なお世話」なので興味がなければスルーしてください。
ご質問者のスプレッドシートの課題としては上記で解決ですが、実務の世界では上記対応では困ることがあります。
棚卸を行って、実際の在庫数と相違が発生したらどうするのでしょうか?
在庫との差異を調整して、その在庫数に修正し、そこから計算を再開するということになるのではないかと思います。
添付画像②は、棚卸の差異を計算し、そこから計算を再開する例です。
添付画像②では11月14日に棚卸を行ったところ、実際の在庫数が計算上の在庫数86より1つ少ない85だったケースです。
最新の棚卸差異を自動計算し、11月15日にC班が2使用した後の在庫数が83となり、棚卸差異が調整されているのが判ります。
「スプレッドシートの関数」の回答画像2
    • good
    • 0

E列を作業列として、プラス、マイナス、どちらでもない、を判別させるようにして計算する例を紹介します。

(作業列はE列である必要はなく、じゃまなら端のほうに移動してもよいです)

E3セルに『=IF(C3="購入",1,IF(RIGHT(C3,1)="班",-1,0))』を入力して、下方向にデータ下端までコピペします。
D2セルに『=SUMIF(E3:E20,"購入",D3:D20)-SUMIF(E3:E20,"<>購入",D3:D20)』と入力します。


E列は、プラスの場合は1、マイナスの場合は-1、どちらでもない場合は0、としています。
このやり方なら、条件が増えたり変更になっても簡単な式で対応できると思います。
エクセルでやっていますので、スプレッドシートということであれば微修正が必要かもしれません。
    • good
    • 0

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


おすすめ情報