dポイントプレゼントキャンペーン実施中!

vistaでエクセル2007を使用しています
たとえば縦軸に
9月
1日 33 44 55
2日 63 24 75
3日 43 64 35


とあります
最終行に月平均を出しているのですが
毎月30日の時はシートの平均を
AVERAGE(D4:D33)で出して
31日の時はD33を34にしたり
また翌月は33に変更したりしているのですが
これを自動で30日の時、あるいは10月なら30日とか
計算してくれるようにすることは
可能でしょうか?
入力データから
毎月複数のシートを変更しなくてはならず
面倒といったら面倒なんです。
30日用のデータと31日用のデータに分けて作って
月によって変更しようかとも
思ったのですが毎月些細な変更があり
そうもできないのです

出来ないのでしたらしょうがないのですが
なんとかうまくできる方法があれば
お教え願えますでしょうか

A 回答 (5件)

回答No4です。


A4セルへの入力の式は次のようにしてください。
=IF(MONTH(DATE(YEAR($A$1),MONTH($A$1),ROW(A1)))<>MONTH($A$1),"",DATE(YEAR($A$1),MONTH($A$1),ROW(A1)))
<>の前に)が一つ足りませんでした。大変失礼いたしまいた。
式の意味はA1セルのデータを使って年や月は決めていますが日にちは1日から始まるのでROW(A1)としてA4セルでは1となります。それが下の行に移るにつれて、例えばROW(A32)となった場合には自動的に月の値が次の月に変わって日にちも変わることになります。その月がA1セルの月と変わらない間は日付を表示していきますが、A1セルの日付の月とROW関数を入れた日付の月が違う(<>)場合にはセルを空白にしなさいということになります。
A1セルに2009/10/1と入力すれば10月31日までは10月で表示されますが11月になれば空白のセルにすることになります。
    • good
    • 0
この回答へのお礼

なるほど大変参考になりました
勉強させていただきありがとうございました
ありがとうございました

お礼日時:2009/10/17 12:19

AVERAGE関数は数値の合計を数値の入力されているセルの数で割って求めているので30日が31日になっても問題は無いでしょう。


どうやら月の変化による月末の日にちを問題にしているようですね。
月末の日にちはうるう年などでも変わりますので年のデータも必要となります。
例えば9月と行ってもいつの年かを設定したうえで9月と表示するようにしてはどうでしょう。
月と表示するセル例えばA1セルに2009/9/1と入力してから右クリックして「セルの書式設定」を選択し、「表示形式」タブの「ユーザー定義」で種類の窓に m"月" と入力してOKします。これでセルには9月と表示されます。
そこで例えばA4セルに1日、A5セルに2日、・・・・・表示させるためにはA4セルに次の式を入力して下方にオートフィルドラッグします。
=IF(MONTH(DATE(YEAR($A$1),MONTH($A$1),ROW(A1))<>MONTH($A$1),"",DATE(YEAR($A$1),MONTH($A$1),ROW(A1)))
その後にそれらのセルの「セルの書式設定」から表示形式のユーザー定義で d"日" とすればよいでしょう。これで指定された月の月末の日にちまでが自動的に表示されます。
なお、指定された月の月末の日にちは次の式で求めることができます。
=DAY(EOMONTH(A1,0))
AVERAGE(D4:D33)関数ではデータが無い空白のセルは当然無視されてデータが入っているセルのみが平均に使われます。データが入っていなくてもその月の日数で平均を求めたい場合には次のような式になりますね。
=SUM(D4:D34)/DAY(EOMONTH(A1,0))
長々と説明しましたがご参考になりましたら幸いです。

この回答への補足

仕事が立て込み遅くなり申し訳ありません

丁寧にお教えいただきましてありがとうございます
=IF(MONTH(DATE(YEAR($A$1),MONTH($A$1),ROW(A1))<>MONTH($A$1),"",DATE(YEAR($A$1),MONTH($A$1),ROW(A1)))
参考に入力テストを行っていたのですが
上記のとおり
A1セルに行って
A4セルに式を入力したのですが
この関数に関して多すぎる因数が入力されていますと
エラーが出ます
途中の""の部分です
どのような意味なのかわからずに困っています
再度お教えいただければ幸いです

補足日時:2009/10/16 11:13
    • good
    • 0

こんばんは!


すでに回答は出ていますが・・・

AVERAGE関数は空白セルや文字列のセルは無視されますので、
極端に言えばD列全てを範囲指定して

=AVERAGE(D:D)

という数式でも希望の結果は得られると思いますよ。
(D列には平均値を求めたい数値だけということが前提です)

以上、参考になれば幸いですが、
的外れなら読み流してくださいね。m(__)m
    • good
    • 0

そもそも


>31日の時はD33を34にしたり
>また翌月は33に変更したりしているのですが
これはやらなきゃダメですか?
全てを31日分の範囲にしてあげても良いのでは?と思います
数値を入れなければAVEは無視してくれるので結果が変わらないはずですよ
    • good
    • 0

AVERAGE関数ならば、数値の入っていないところ抜きで平均をだしてくれます


なので、31日分を用意して、30日などの月は31日の部分を空欄にして
同じ表を使うと良いですよ
    • good
    • 0
この回答へのお礼

ありがとうございます
参考になりました
数値の場合は変更しないでも
大丈夫なのですね
おかげで今まで無駄な手間をかけていたとわかりました

引用した値で数式を計算している場合は
計算値が0と出てしまい
そこは値が狂ってしまいます
この場合はどのようにしたらよいのでしょう?

お礼日時:2009/10/02 09:13

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