- ベストアンサー
関数教えてください
関数をどのように組んだら良いのかわからないので教えてください。 毎日のデータ-があるとします。 (例 今日は4月1日だとして、 A列 B列 C列 1月1日 50円 (答え) ・ ・ 2月28日 100円 3月1日 150円 ・ ・ 3月31日 200円 4月1日 100円 今日より1ヶ月前の合計をC列に出したいのです。 毎日、日は過ぎていきますが、シートを開いたときから 1ヶ月前というリアルタイムで計算したいのです。 どうぞよろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
例データ 2007/6/11 2 2007/6/12 2007/6/13 2007/6/14 2007/6/15 2007/6/16 2007/6/17 2007/6/18 2007/6/19 2007/6/20 2007/6/21 3 2007/6/22 4 2007/6/23 1 2007/6/24 2 2007/6/25 3 2007/6/26 4 2007/6/27 1 2007/6/28 2 2007/6/29 3 2007/6/30 1 2007/7/1 2 2007/7/2 3 2007/7/3 2007/7/4 2007/7/5 10 2007/7/6 1 2007/7/7 3 2007/7/8 1 2007/7/9 2007/7/10 ーー 上記以外のセルに(例えばC2に) =SUMPRODUCT((A1:A50<=TODAY())*(A1:A50>DATE(YEAR(TODAY()),MONTH(TODAY())-1,DAY(TODAY())))*(B1:B50)) A50、B50の50はデータが無くても多い目にとってかまいませんので適当に。 結果 33 上記例で、7/13日以後適当に増やして、それだけ増えること、B列計数を削除してそれだけ減ることを確認してください。
その他の回答 (3)
- zap35
- ベストアンサー率44% (1383/3079)
#03です。#01さんへの補足を見ましたが要領得ません >合計はB列の金額の集計です。 合計とは本日が7/24として、6/24の集計をすればよいのですか? また求める集計値は6/24のもの1つだけですか? だとすればEDATE関数で1カ月前の日付を求めてSUMIF関数で集計すればよいでしょう =SUMIF(A:A,EDATE(TODAY(),-1),B:B) EDATE(TODAY(),-1)は本日の1月前の日付を求める式です。ただし本日が7/31だと6/30を返しますから#03で質問したように、少しおかしなことになります もしC列の各行にA列の1月前の売上集計を表示したいのであればC1に =IF(DAY(EDATE(A1,-1))=DAY(A1),SUMIF(A:A,EDATE(A1,-1),B:B),0) と入力し、下方向にコピーすればよいでしょう。この式では7/31の前月同日はないので0を返すようにしています。ご参考まで
補足
説明がわかりにくくてすみません。 >合計とは本日が7/24として、6/24の集計をすればよいのですか? 7月24日として1ヶ月前の6月25日からB列の合計を求めたいのです。 7月25日になったら6月26日から7月25日までのB列の合計。 7月26日になったら6月27日から7月26日の合計といった具合にです。 30日月や2月の変則月の場合の日数は関係なく、 3月15日だったら2月16日から3月15日まで・・という風にです。
- zap35
- ベストアンサー率44% (1383/3079)
補足要求です。 前月同日売上と比較したいという趣旨だと思いますが 3月31日の前月同日はどう考えればよいですか? 2月31日なんてありませんから前月同日の売上は常に0で良いのでしょうか? 反対に4月は30日までしかありませんので、3月31日の売上はC列には表示されない(データが抜ける)ことになります。これでも意味がありますか?
補足
上記に補足させていただきました。 よろしくお願いいたします。
- SRitchie
- ベストアンサー率21% (103/470)
何の合計? 一か月前の定義は?(例えば30日前とか日付が同じ前月とか、もし後者の場合、3月29日以降や5月、7月、10月、12月の各31日の処理) A列、B列の初期値は?
補足
説明不足ですみません。 合計はB列の金額の集計です。 1ヶ月の定義はこのファイルを開いた日から1ヶ月前からです。 (なので30日前というほうが合っているのでしょうか・・)
お礼
ありがとうございます。 早速試してみたいと思います。