プロが教えるわが家の防犯対策術!

例えば
  A   B   C    D
1 日付 品名  金額  小計
2 3/1  A商品  500  1800
3     B商品  800
4     C商品  500
5 3/2  B商品  500  500
6 3/3   A商品  300  300

というように次の日付が入るまでの合計(日ごとの集計)をD列に出したい場合に何か関数はありますでしょうか。

ちなみに日付ではなく文字列のパターンもあります。

A 回答 (3件)

「どうしても」ということであれば、やってやれないことはないのですが…



●甲案:作業列を使う

 E2セル: =IF(A2<>"",A2,E1)
 F2セル: =IF(A2<>"",SUMIF(E:E,E2,C:C),"")
として、
 E2:F2を下方にフィル⇒E列を非表示にする

●乙案:数式一発で

 E2セルを、
  =IF(A2="","",SUM(OFFSET(C2,,,MIN(INDEX(MOD((A3:$A$999<>"")*ROW(A3:$A$999)-1,2^16),))+1-ROW(A2))))
 として下方にフィル
--------------------------------------------------
以上前置き。以下本題の「アドバイス」です。

もし日付欄が普通に埋まっていれば、
いちいち作業列を用意したり、
いちいち数式をひねくり回す必要はありません。

日付欄が詰まっていると見にくいということであれば、
[条件付き書式]を使って、
「上隣のセルと同じ日付であればフォント色を白」と設定すれば、
見た目は空白になり、スッキリします。

同じ日付を繰り返し入力するのが面倒ということであれば、
上記のように条件付き書式を設定した上で、
あらかじめ A2セルを、=A1 としてフィルしておけば、
日付を入力したセルのみが黒字で表示され、
そのセル以下には自動的に直近の日付と同じ日付が入ります。

Excelは、工夫次第でいろんな使い方ができる一方で、
開発者が想定する「普通の使い方」というものがあって、
機能にしろ関数にしろそれに合わせて設計されていますから、
結局、「普通にやるのが一番ラク」なのです。

以上ご参考まで。
    • good
    • 0
この回答へのお礼

なるほど。
数式でばかり考えていましたが条件付書式なら見た目を白にすれば同じことですね。
最初はIF関数でやってたのですが階層が7つまででしたので8行以上ある場合に書き換えたりして面倒だったのでもっと簡単な数式ができないかと考えあぐねていました。
一度、やってみます。

お礼日時:2008/03/10 13:01

#1です。


そうです。
私の関数計算は、
同じ日付かどうか確認してから、合計の解を出しているので、
そうなります。
    • good
    • 0
この回答へのお礼

そこは空白にしたかったので別のやりかたがあるのか参考にしたかったのですがやはり日付をいちいち入力しないと難しいようですね。ありがとうございました。

お礼日時:2008/03/04 23:25

関数のみで行うとした場合ですが、


日付の欄には、必ず日付を入れましょう。
Dのセルの欄には、
D2セルに
=IF(A2<>A1,SUMIF(A:A,A2,C:C),"-")
を入力
その後は、このD2セルを下まで伸ばして、関数をコピーしましょう。
これで、可能かと思います。

この回答への補足

>日付の欄には、必ず日付を入れましょう。同じ日でも
とは
3/1
3/1
3/1
という意味でしょうか?

補足日時:2008/03/04 18:02
    • good
    • 0

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