Excel VBA:誕生日から年齢と干支を求める|DateDiff関数を使用




Homeに戻る > Excel 日付・時間のTipsへ

年齢はDateDiff関数を使い年の差で計算しています。

今年の誕生日がまだ来ていない場合はマイナスしています。

干支は年を12で割った余りで求められます。

割り切れる場合は「申」、そして1から順に「酉、戌、亥、子、丑、寅、卯、辰、巳、午、羊」になります。


DateDiff関数の構文

引数の日付の間隔を返す関数

DateDiff ( interval, date1, date2 [, firstdayofweek] [, firstweekofyear] )

引数

  • interval : (省略不可)時間間隔の時間単位を文字列式で指定
  • date1、date2 : (省略不可) 間隔を求める2つの日付を指定
  • firstdayofweek : (省略可能)週の始まりの曜日を表す定数、省略すると日曜日になります。
  • firstweekofyear : (省略可能)年の第1週を指定する定数、省略すると1月1日を含む週が第1週になります。

intervalの引数(前後はダブルクォーテーション("")で囲みます)

  • yyyy : 年
  • q : 四半期
  • m : 月
  • y : 年間通算日
  • d : 日
  • w : 平日
  • ww : 週
  • h : 時
  • n : 分
  • s : 秒

firstdayofweekの引数

  • vbUseSystem : 0 NLS APIの設定を使用
  • vbSunday : 1 日曜日 (既定値)
  • vbMonday : 2 月曜日
  • vbTuesday : 3 火曜日
  • vbWednesday : 4 水曜日
  • vbThursday : 5 木曜日
  • vbFriday : 6 金曜日
  • vbSaturday : 7 土曜日

firstweekofyearの引数

  • vbUseSystem : 0 NLS APIの設定を使用
  • vbFirstJan1 : 1 1月1日が含まれる週から開始 (既定値)
  • vbFirstFourDays : 2 新年の少なくとも4日が含まれる最初の週から開始
  • vbFirstFullWeek : 3 年の最初の完全な週から開始

その他に使用している関数

DateSerial関数の構文

引数の年、月、日に対応するバリアント型の値を返す関数

DateSerial ( year, month, day )

引数

  • year : (省略不可)年を100から9999の範囲で、数値または数値式を整数型で指定
  • month : (省略不可)月を整数型で指定
  • day : (省略不可)日を整数型で指定

関連する「予定日までのカウントダウン日数を計算 : Excel」を掲載していますので、参考にしてください。




誕生日から年齢と干支を求めるVBA

ExcelシートのVBAコード

コマンドボタン クリックイベント VBAコードの解説

  1. E4セルに入力がなければ、メッセージを表示し終了します。
  2. E4セルの入力値が日付型でなければ、メッセージを表示し終了します。
  3. DateSerial関数で入力値から日付を作成します。
  4. 今日の日付と入力日を比較します。
  5. 小さければDateDiff関数から取得した年数からマイナス1します。
  6. DateDiff関数から取得した年数(年齢)を表示します。
  7. 年齢を12で割り、その余りから干支を求めます。
Private Sub CommandButton1_Click()
    Dim nage As Integer
    Dim seto As String
    
    If Range("E4") = "" Then
        MsgBox "生年月日を入力してください。"
        Exit Sub
    End If
    
    If Not IsDate(Range("E4")) Then
        MsgBox "生年月日が日付型ではありません。"
        Exit Sub
    End If
    
    '年齢の計算
    If Date < DateSerial(Year(Now), Month(Range("E4")), Day(Range("E4"))) Then
        nage = DateDiff("yyyy", Range("E4"), Now) - 1
    Else
        nage = DateDiff("yyyy", Range("E4"), Now)
    End If
    
    Range("D6") = "年齢"
    Range("E6") = nage

    '干支の計算
    Select Case Year(Range("E4")) Mod 12
        Case 0: seto = "申"
        Case 1: seto = "酉"
        Case 2: seto = "戌"
        Case 3: seto = "亥"
        Case 4: seto = "子"
        Case 5: seto = "丑"
        Case 6: seto = "寅"
        Case 7: seto = "卯"
        Case 8: seto = "辰"
        Case 9: seto = "巳"
        Case 10: seto = "午"
        Case 11: seto = "羊"
    End Select
    Range("D7") = "干支"
    Range("E7") = seto
End Sub

Excel実行画面

E4に生年月日を入力し、「実行」ボタンをクリックしてください。

「実行」ボタンをクリックすると、入力されている生年月日をチェックし、問題なければ年齢と干支を算出します。

生年月日を入力し年齢と干支を算出


Homeに戻る > Excel 日付・時間のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved