[[20041007115842]] 『西暦から1年ひく方法』(tak) >>BOT

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『西暦から1年ひく方法』(tak)

計算式で西暦から1年ひくことは可能でしょうか。例えば、A1セルに「2004/01/01」とあるとして、これを計算式を用いて「2003/01/01」としたいのですが、もし方法をご存じでしたら教えてください。


 =DATE(YEAR(A1)-1,1,1)
としてみてはいかがでしょう。
(みやほりん)


 ありゃ、これじゃ1月1日以外でも前年の1月1日になってしまいますが、、、。
 =DATE(YEAR(A1)-1,MONTH(A1),DAY(A1)) でどうでしょう。もうひとつ、=EDATE(A1,-12)
 但し微妙に違うようで、2004/2/29 をA1に入れてみたところ、=DATE・・の方は 2003/3/1、
 =EDATE・・の方は2003/2/28 になりました。う〜ん、わからん。(純丸)

 やっぱりそうですよね。うかつでした<純丸さん
[[20040901152926]] 『1ヶ月前を表示する。』(うみ) 
[[20040830170152]] 『半年後の日付を自動的に表示させたい』(Q太) 
[[20040710143424]] 『今日現在から2年後を表示する関数』(ぴろ) 
[[20040311231828]] 『指定日から何ヶ月後の日付計算表示』(タムタム) 
[[20040309184157]] 『1 3 6ヶ月後を求める数式について』(ピートダイ) 
[[20040127105320]] 『年月日を3年後にしたい』(わか) 
[[20031002111534]] 『1ヶ月後の月日を計算する方法』(みど) 
[[20030506222545]] 『ある特定の日から2ヵ月後・6ヵ月後を算出したい』(ハル) 
[[20021029141055]] 『A1の日付に対し6ヵ月後の日付を表示させたい』(益々たらえ) 
参考になるでしょうか?
(みやほりん)


早速のレス、ありがとうございます。
純丸さんの=DATE(YEAR(A1)-1,MONTH(A1),DAY(A1)) でやってみたらうまくいきました。
ただ、2/29の表示だけはうまくいかないようです。みやほりんさんが載せてくれた過去ログの中にある、「年月日を3年後にしたい」というやつでは、DATEの他にLEFTとTEXT関数も使っています。これでも試したのですが、やはり閏年については3/1になります。閏年対策まで考えると、かなり複雑な(というか長い)式が必要になりそうです。当面は、純丸さんが教えてくれたものでなんとかなりそうなので、それを利用させていただきます。

みやほりんさん、純丸さん、ありがとうございました。
(tak)


 EDATE関数は知らないけどDATE関数は
=DATE(2004,1,1-1)
とかやると2004年1月1日の1日前の日付である2003年12月31日を返す関数だから
=DATE(2003,2,29)
はすなわち=DATE(2003,2,28+1)に等しく2003年3月1日になる仕組みですね。
 
質問と、回答されたお二方の式を見て考えるに、
2001/02/28の一年前は2000/02/28で良くて
2000/02/29の一年前は1999/02/28で良いのなら、
=DATE(YEAR(A1)-1,MONTH(A1),DAY(A1)-IF(TEXT(A1,"mmdd")="0229",1,0))
とかはどうかしらねぇ…
2001/02/28の一年前は2000/02/29が良い、って言うなら話はまた面倒になるけれども。
追記:
なるほど、EDATE関数って月末を適当にうまく扱う関数なのね(←認識大雑把すぎ?)
(ご近所PG)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.