重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

日にち計算で、当日から半年-1又は一年-1を求めたい時に
下記の様入力してみましたが、

=DATE(YEAR(A1),MONTH(A1)+6,DAY(A1)-1)

2011/8/29→2012.02.28→2012.08.28
2011/8/30→2012.02.29→2012.08.29
2011/8/31→2012.03.01→2012.08.30
2011/9/1→2012.02.29→2012.08.31
2011/9/2→2012.03.01→2012.09.01

2011/08/31ま半年後-1だけ結果がおかしくなってしまいます。
5年先でもおなじ結果です。

解決方法を教えて頂けませんでしょうか?
宜しくお願い致します。

A 回答 (3件)

詳しく検証していないけど、


=IF(DATE(YEAR(A1),MONTH(A1)+6,DAY(A1)-1) <EDATE(A1,6),DATE(YEAR(A1),MONTH(A1)+6,DAY(A1)-1),EDATE(A1,6))
でどうだろう。
(edateを使うためには、アドインの分析ツールのチェックを入れておく必要があります。)
    • good
    • 0
この回答へのお礼

ありがとうございますm(_ _)m

出したかった結果が出てきました。

これで設定して置けば何年先でも問題なしです!

助かりました、本当にありがとうございます。

お礼日時:2011/06/10 11:07

「半年後の1日前」というフロー的には全く問題ない結果ですが


どういう結果を想定しているのでしょうか?

2011/8/29の半年後=2/29、その一日前=2/28
2011/8/30の半年後=2/30=3/1、その一日前=2/29
2011/8/31の半年後=2/31=3/2、その一日前=3/1
2011/9/1の半年後=3/1、その一日前=2/29
2011/9/2の半年後=3/2、その一日前=3/1
    • good
    • 0
この回答へのお礼

ありがとうございます。

今表したいのは、
2011/8/29→2012.02.28
2011/8/30→2012.02.29
2011/8/31→2012.03.01→ここの結果を2012.02.29としたい。
2011/9/1→2012.02.29
2011/9/2→2012.03.01

設定した日にち(365日)に使用出来る関数表示をしたいです。
上記の5日のうちに、結果同じ日が3日あってもよいのですが、8/31と9/1の結果が8/31の方が1日多くなってしまわないようにしたいです。

教えてください。
宜しくお願いします。

お礼日時:2011/06/10 10:01

行っている計算は、


8/31+6月-1日
=2/31-1日=2/30
=3/2(うるう年以外の場合)
=3/1(うるう年の場合)
ですね。

8/31とうるう年以外の8/30については、独自に定義する必要があります。

2011/8/31
2012/8/31
2012/8/30

などをどのように計算させたいかをまずきめる必要があるということです。
    • good
    • 0
この回答へのお礼

ありがとうございます。

質問が明確ではなかったですね。

表したいのは、
2011/8/29→2012.02.28
2011/8/30→2012.02.29
2011/8/31→2012.03.01→ここを2012.02.29にしたい。
2011/9/1→2012.02.29
2011/9/2→2012.03.01
5行中3行目だけ日にちが逆転してしまってるのを防ぐにはどうすれば良いのかです。

方法を教えて頂けませんでしょうか?

宜しくお願いします。

お礼日時:2011/06/10 09:49

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