- ベストアンサー
エクセル-過去6カ月分の合計を関数で計算したい
エクセルで下記のようなテーブルがあります。 4/1 500 4/1 300 4/2 600 . . 12/31 1000 日付ごとに数字が入っています。1日に1つの数字とは限りません。 これを今日遡って半年分だけ合計した数を、表示したいのですがどのような関数を書いたらよいでしょうか。 ファイルはどのタイミングで誰が開くかわからないため、常に今日から半年分(180日分)合計したいと思っています。 よろしくお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
No.2です。 私は未来日付のデータがあるとは想定していませんでしたが もし存在するならNo.3さんの回答のように 今日の日付より後の分を引いてやらなければいけません。 私がNo.2で書いた式はあくまで 「A列の日付が今日の日付の180日前の日付より後になっている行の B列の数値を集計する」という式ですから。 なお、質問は「今日を含めて180日分」ということでしたので 「ちょうど180日前の日付」は含めないようにしています。 今日を含めて3日分、と言う場合、2日前・1日前・今日で 3日分になりますよね。それと同じ考え方です。 余談ですが、No.3さんの回答の >DATE(YEAR(TODAY()),MONTH(TODAY()-6),DAY(TODAY())) の部分は DATE(YEAR(TODAY()),MONTH(TODAY())-6,DAY(TODAY())) の間違いではないかと…
その他の回答 (4)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 色々方法が出ていますが、 他の一例です。 当方使用のExcel2003の場合ですが、EDATE関数を使っていますので メニュー → ツール → アドイン → 「分析ツール」にチェックを入れておく必要があります。 A2から行方向に日付、B2から行方向に数値が入力してあるとします。 とりあえず1000行目まで対応できる数式です。 表示させたいセルに =SUMPRODUCT((A2:A1000>=EDATE(TODAY(),-6))*(A2:A1000<=TODAY())*(B2:B1000)) としてみてはどうでしょうか? 数式内のEDATE関数は大の月・小の月関係なく、今日から「-6ヶ月」という事になりますので 2009年9月2日以降のデータを集計しています。 以上、参考になれば幸いですが 的外れなら読み流してくださいね。m(__)m
- KURUMITO
- ベストアンサー率42% (1835/4283)
六ヶ月前ですが月で6か月前の今日の日付とするのならば =SUMIF(A:A,">="&DATE(YEAR(TODAY()),MONTH(TODAY()-6),DAY(TODAY())),B:B)-SUMIF(A:A,">"&TODAY(),B:B) 単に本日より180日前からでしたら =SUMIF(A:A,">="&TODAY()-180,B:B)-SUMIF(A:A,">"&TODAY(),B:B)
お礼
検索条件の部分がうまく記入できなかったのですが、このように考えればいいいんですね。 ほかのことにも応用できそうです。 ありがとうございました。
- don9don9
- ベストアンサー率47% (299/624)
A列が日付、B列が数字の場合 =SUMIF(A:A,">"&TODAY()-180,B:B) でいいと思います。
お礼
簡単な関数で、とてもわかりやすいです。 思っていた結果を表示することができました。 ほかにも悩んでいた関数にも利用できそうです。 ありがとうございました。
- msn201002
- ベストアンサー率18% (3/16)
今日の日付から180日前なら =now()-180 で算出できますね、今日10/3/2の180日前なら 9/9/3 と計算できますから、それに相当する セルを探し出し、データー項目をsum()で 合計すれば良さそうですが、searchやfindも 使えばつくれそうですが、関数だけでなく マクロの範疇になりそうです。
お礼
自分以外の人に引き継ぐこともあるので、なるべく簡単で短い関数を使いたいと考えています。 マクロはなるべく使いたくないのですが、自分専用のファイルならいいかもしれません。ありがとうございました。
お礼
基本的に未来の日付が入ることはないのですが、誰もが使うファイルの場合はいろいろなことを考えておかないといけないのですね。 わかりやすいご説明をありがとうございます。