20090501,1,a001,2
20090502,2,a001,1
20090503,2,a001,1
20090504,1,a002,5
20090505,1,a004,2
20090506,2,a003,1
20090507,2,a002,3
20090508,1,a003,2
20090509,2,a004,1
上記の様な表があるとします。
左から日付、出入庫フラグ、品番、数量、とします。
フラグは、"1"の場合は入庫、"2"の場合は出庫とします。

条件、a001の場合、フラグ1の合計から、フラグ2の合計を差し引く。
a001の在庫数はゼロとなります。

つまり同じ品番である場合、各フラグの値を相殺させて在庫高を
出したいのです。在庫数を出力する場所は問いません。
これを関数でどうにかなりませんでしょうか?お教えください。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

仮に日付がA列、出入庫フラグがB列、品番C列、数量D列、1行目から300行目までのデータとします。



=SUMPRODUCT((B1:B300=1)*(C1:C300="a001")*D1:D300)-SUMPRODUCT((B1:B300=2)*(C1:C300="a001")*D1:D300)

で求められます。
    • good
    • 0
この回答へのお礼

簡潔な回答助かります。ありがとう御座いました。

お礼日時:2009/05/13 15:41

    A    B   C   D  E  F  G H  I


1  DATE   FLAG PNUM QNTY   PNUM 1 2 INV
2  20090501   1 a001   2   a001 2 2  0
3  20090502   2 a001   1   a002 5 3  2
4  20090503   2 a001   1   a003 2 1  1
5  20090504   1 a002   5   a004 2 1  1
6  20090505   1 a004   2
7  20090506   2 a003   1
8  20090507   2 a002   3
9  20090508   1 a003   2
10 20090509   2 a004   1
11

G2: =SUMPRODUCT(($C$2:$C$100=$F2)*($B$2:$B$100=G$1),$D$2:$D$100)
I2: =G2-H2
    • good
    • 0
この回答へのお礼

わざわざ例を作っていただいてありがとう御座いました。参考に致します。

お礼日時:2009/05/13 15:46

EXCELのバージョンはいくつでしょう?


配列関数を多用すると非常に重くなるので、
EXCEL2007ならSUMIFSを使った方が良いと思います。
    • good
    • 0
この回答へのお礼

バージョンは2007です。行数が一万を超えるものもあるので、sumifもあわせて勉強しておきます。ありがとう御座いました。

お礼日時:2009/05/13 15:43

一例です。


表範囲をA1:D10、F1以下に品番を事前設定、G1に次の関数を設定し、下方向にコピーで如何でしょうか。
=SUMPRODUCT(($B$1:$B$100=1)*($C$1:$C$100=F1)*($D$1:$D$100))-SUMPRODUCT(($B$1:$B$100=2)*($C$1:$C$100=F1)*($D$1:$D$100))
    • good
    • 0
この回答へのお礼

ありがとう御座います。参考になりました

お礼日時:2009/05/13 15:45

このQ&Aに関連する人気のQ&A

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


人気Q&Aランキング