- ベストアンサー
条件に合うデーターを任意のセル間で累計、合計するには?2
下記のような出荷予定表があります。非常に細かく数量、モデルは分かれておりますが、対応コードはNT-233,236,334の3つなんですが(対象外の時もあり、空白が該当)この中で、対応コードの横列に各対応コード毎にまとめ、切替わる地点間の合計を出したいのですが、どうすればよいでしょうか? 式をフィルドラッグで出したいのです。 IF,SUMIF関数を使うのは分かっていますが、対応コードが連続した間毎の累計合計を出すと言う条件設定、セル指定が理解記述できません。どなたかアドバイスお願いします。 A B C D 出荷モデル 数 量 対応コード コード条件連続時累計合計 PW-Z7 40 NT-233 PW-71 60 NT-233 100と表示したい PW-63 80 NT-236 PW-Z5 20 NT-236 PW-50 30 NT-236 PW-Z4 40 NT-236 PW-40 50 NT-236 220と表示したい PW-36 60 PW-Z4 50 NT-236 PW-40 150 NT-233 PW-40 40 NT-236 PW-28 70 PW-28 180 PW-Z2 450 PW-Z2 440 NT-334 PW-25 70 NT-334 PW-25 75 NT-334 PW-22 60 NT-334 PW-22 160 NT-334 PW-Z2 185 NT-334 985と表示したい PW-EZ 30 NT-236 PW-EZ 50 NT-236 80と表示したい PW-EZ 20 PW-EZ 100 PW-EZ 80 NT-334 PW-EZ 50 NT-334 130と表示したい
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
再びNo.1 です。 =IF(AND(C2<>"",C2<>C3),SUMIF($C$2:C2,C2,$B$2:B2)-SUMIF($C$1:C1,C2,$D$1:D1),"") 前半のSUMIF は、同一コードの累計、 後半のSUMIF は、同一コードの既出累計(D列)の合計、 その差を求めることで、その行まで連続している累計をだしています。 最初の行からの累計しかでないとなると、後半のSUMIF が生きていないようです。 こちらではフィルドラッグして正しく反映しています。
その他の回答 (2)
原始的な方法ですが… 1.セル E2、F2、G2、D2 にそれぞれ次式を入力 E2: =IF(C2="","",C2<>C3) F2: =IF(C2="","",C2<>C1) G2: =IF(E2=FALSE,IF(F2=TRUE,1,G1+1),IF(F2=FALSE,G1+1,"")) D2: =IF(C2="","",IF(AND(E2,NOT(F2)),SUM(OFFSET(B2,-G2+1,0,G2,1)),"")) 2.範囲 D2:G2 を下方にズズーッと複写
お礼
回答有難うございます。NO.1の方のアドバイスで何とかできましたが、mike_gさんの回答方式でも再現できました。 私はオフセット、アドレス等の関数は苦手であまり使いませんが、基本を覚える意味では大いに参考になりました。 有難うございました。
連続しない行(たとえば「220と表示したい」行の下2行目から4行目までの 単独行)も数字表示してよければ、 D2:=IF(AND(C2<>"",C2<>C3),SUMIF($C$2:C2,C2,$B$2:B2)-SUMIF($C$1:C1,C2,$D$1:D1),"")
補足
ご回答有難うございます。早速実行してみましたが、私のやり方が悪いせいもあるのか、先頭行からの累計が表示されてしまいます。 説明不足で申し訳ありませんが、スタート行からの累計ではなく、同じ対応コードが連続する範囲のみ、その区間だけの合計をフィルドラッグで出さればいいなーと思っているのですが。 スキルが低くて申し訳ありません。教えいただいた数式で後半の)-SUMIF($C$1:C1,C2,$D$1:D1)の部分が今一、理解できてないようです。 もう一度、試してみます。すみません。
お礼
重ね重ねの回答有難うございました。 もう一度、慎重に入力した結果、正確に値を出せました。D2セルに入れる式をD1セルに入れていたからおかしくなっていたと思います。 有難うございました。