Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7673 / 13644 ツリー ←次へ | 前へ→

【37577】DateDiffで年齢算出 Jaka 06/5/12(金) 13:47 質問[未読]
【37583】Re:DateDiffで年齢算出 ハト 06/5/12(金) 14:32 回答[未読]
【37584】Re:DateDiffで年齢算出 角田 06/5/12(金) 14:47 回答[未読]
【37592】Re:DateDiffで年齢算出 Jaka 06/5/12(金) 16:38 お礼[未読]
【37602】Re:DateDiffで年齢算出 ハト 06/5/12(金) 18:20 発言[未読]

【37577】DateDiffで年齢算出
質問  Jaka  - 06/5/12(金) 13:47 -

引用なし
パスワード
   何で全部23になっちゃうのでしょうか?
日付じたい良く解ってないので、トンチンカンな事でしょうか?
何となくヘルプの
「12 月 31 日とその次の年の 1 月 1 日を比較すると、DateDiff 関数の年 ("yyyy") は、1 日後であっても、1 を返します。」
が絡んでいるような気もしますが...。

MsgBox DateDiff("yyyy", "S58/5/11", "H18/5/12") & vbLf & _
    DateDiff("yyyy", "S58/5/12", "H18/5/12") & vbLf & _
    DateDiff("yyyy", "S58/5/13", "H18/5/12") & vbLf & _
    DateDiff("yyyy", "1983/5/11", "2006/5/12") & vbLf & _
    DateDiff("yyyy", "1983/5/12", "2006/5/12") & vbLf & _
    DateDiff("yyyy", "1983/5/13", "2006/5/12")

【37583】Re:DateDiffで年齢算出
回答  ハト  - 06/5/12(金) 14:32 -

引用なし
パスワード
   おはようございます

▼Jaka さん:
>何で全部23になっちゃうのでしょうか?
>何となくヘルプの
>「12 月 31 日とその次の年の 1 月 1 日を比較すると、DateDiff 関数の年 ("yyyy") は、1 日後であっても、1 を返します。」
>が絡んでいるような気もしますが...。

その通りです
DateDiff関数で("yyyy")を指定した場合、月日まで考慮せずに
年の数字のみを計算して、差が戻ってきてしまいます。

ちょっと使い勝手が悪いですよね

【37584】Re:DateDiffで年齢算出
回答  角田 WEB  - 06/5/12(金) 14:47 -

引用なし
パスワード
   こんにちは。
VBAのDateDiffで、ExcelのDATEDIFのように「満年数」「満月数」を
求めるには、DateDiffの結果でDateAddしてみて、その結果が元の日付を
超えていないか調べる必要があります(超えていたら、マイナス1)。

参考:
http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips05.htm

【37592】Re:DateDiffで年齢算出
お礼  Jaka  - 06/5/12(金) 16:38 -

引用なし
パスワード
   ハト さん、角田 さん こんにちは。
お返事ありがとうございます。

>おはようございます
って、06/5/12(金) 14:32 の時間で...。(^_^;[晴レ]

なんとなく、こう言うものなのかなぁ。って思っていたら案の定....。
それで、仕方なくこれ使おうかと思っていたんですけど、

DAY1 = "1983/5/13": DAY2 = "2006/5/12"
st = "DATEDIF(""" & DAY1 & """,""" & DAY2 & """,""y"")"
MsgBox Application.Evaluate(st)

角田さんの「満年数」「満月数」を見て、年齢って満やら数えって良く解らないのもあるんだよなぁ〜。とため息。
DATEDIFにも落とし穴があるそうじゃないですか、う〜ん。
もっと勉強しなきゃダメだな!

ありがとうございました。

【37602】Re:DateDiffで年齢算出
発言  ハト  - 06/5/12(金) 18:20 -

引用なし
パスワード
   Jaka さん

>>おはようございます
>って、06/5/12(金) 14:32 の時間で...。(^_^

いやあ、癖ですねえ
真夜中でも書込みとかには「おはようございます」って使ってます(^^;


>角田さんの「満年数」「満月数」を見て、年齢って満やら数えって良く解らないのもあるんだよなぁ〜。とため息。

まあ、普通に年齢って言うと、下のような感じですねw

'DAY1:生年月日
'DAY2:当日

st = Datediff("yyyy",DAY1,DAY2)

'今年の誕生日
DAY3 = DateAdd("yyyy",st,DAY1)

Select Case DAY3
  Case IS < DAY2
     '今年の誕生日は過ぎた
  Case IS > DAY2
     '今年の誕生日はまだ
     st = st - 1
  Case IS = DAY2
     '誕生日おめでとう!
END Select

7673 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free