• 締切済み

VBAで年齢を計算する方法について

x0000xの回答

  • x0000x
  • ベストアンサー率52% (67/127)
回答No.3

以下で計算できます。 誕生日当日に年齢加算する IIf(Format(誕生日, "mm/dd") > Format(日付, "mm/dd") _ , DateDiff("yyyy", 誕生日, 日付) - 1 _ , DateDiff("yyyy", 誕生日, 日付)) 誕生日前日に年齢加算する IIf(Format(誕生日- 1, "mm/dd") > Format(日付, "mm/dd") _ , DateDiff("yyyy", 誕生日- 1, 日付) - 1 _ , DateDiff("yyyy", 誕生日- 1, 日付))

bottle19ok
質問者

お礼

回答有難うございます。 コードをみたときなるほど、と声を出してしまいました。IIf関数はまだふれる機会がなかったので大変勉強になりました。有難うございました。

関連するQ&A

  • VBAでの年齢計算がうまくいきません。

    失礼いたします。  VBAで年齢の計算を行いたいのですがなかなかうまくいきません。 =sub Dim 開始日付 As String Dim 終了日付 As String Dim 年齢 As String 開始日付 = "S54/4/1" 終了日付 = "H22/4/1" 年齢 = "=DATEDIF(開始日付,終了日付,""Y"")" =endsub としても、DATEDIF関数は引数をうまく処理してくれないのです。 エクセル関数を使わずに、年齢を算出するか。 エクセル関数内に引数を代入する方法があれば教えていただけないでしょうか?

  • エクセルの年齢計算ができない(VBA)

    VBAでエクセル関数のDATEDIF関数を入力したいのですがうまくいきません。なにかいい方法はありませんか? 例)年齢基準値セルA1、終了期間B1でC1で年齢計算 Private Sub CommandButton1_Click() Range("C1").Value = "=DATEDIF(A1,B1,"y")" End Sub この記述でうまくいきません。 ようは、コマンドボタンクリックで、C1にDATEIF関数を入力したいのですが・・・

  • エクセルVBA、年齢計算について質問です

    失礼いたします、生年月日、基準日をテキストボックスに入力し、年齢を算出するマクロを作成してるのですが質問です。 以下のようなマクロを組んでいるのですが。 Dim 生年月日 As String Dim 開始日付 As String Dim 年齢 As String 生年月日 = "H" + UserForm1.TextBox1.Value + "/" + UserForm1.TextBox2.Value + "/" + UserForm1.TextBox3.Value 年齢基準日 = "H" + UserForm4.TextBox1.Value + "/" + UserForm1.TextBox5.Value + "/" + UserForm1.TextBox6.Value 年齢 = Application.Evaluate("=datedif(""" & Format(生年月日, "yyyy/mm/dd") _ & """,""" & Format(年齢基準日, "yyyy/mm/dd") & """,""y"")") 上記のようにそれぞれH”年”/”月”/”日”という形で取得しています。 この場合、適正な値が入力されると上手くいきますが、日付として成立しない値(例えば月に80など)を入力した場合にエラーが発生します。 エラーが発生した場合にエラー処理(例としてMsgBox+Goto処理)をしたいのですがどのようなコードを記入すればいいでしょうか?

  • 今の自分の年齢を取得するvbaコードが知りたい

    今の自分の年齢を取得するvbaコードが知りたいのですが Sub test1() Dim dtm誕生日 As Date dtm誕生日 = #7/1/1986# MsgBox Format(Date - dtm誕生日, "yyyy/mm/dd") MsgBox DateDiff("yyyy", dtm誕生日, Date) End Sub を作ってみたのですが 違うのが返りました。 DateDiff("yyyy", dtm誕生日, Date) は、30が返ってしまいます。 今日の時点ではまだ29歳なのですが そういう場合どうすればいいでしょうか? 「現在は29歳です」と返したいのですが、 どのようにすればいいでしょうか?

  • Datediff 正確な年齢を求める方法

    VBAでフォームを作成しています。 本通りにDatediffを入力したのですが、確実な年齢がでてきません。 どうすれば宜しいですか?教えて頂けたらと思います。 ちなみにプロシージャは・・・ Private Sub Text生年月日_AfterUpdate() Texr年齢.Value=Datediff("yyyy",Text生年月日.Value,Now()) よろしくお願いします。  

  • ExcelVBAで年齢計算

    VBAで年齢計算をしたいのですが、「型が一致しない」と怒られます。 A列に誕生日が入っており、B列に年齢が入るようにしたいです。 Sub old() For i = 2 To Cells(2, 1).End(xlDown).Row Dim t As Date Dim b As Date t = Date b = Cells(i, 1) y = DateDiff(b, t, "y") Cells(i, 2) = y Next End Sub どこかおかしいところはありますでしょうか? 教えてください!

  • Access 2000での年齢計算

    Access 2000にて作成しているデータベースのレポートにて、顧客の年齢を計算しています。基本的には正しい年齢が表示されるのですが、一部の方の分だけ年齢の計算結果が正しくありません。現時点で見つかっている事例は2件のみですが、正しい年齢より1年多かったり、逆に1年少なかったりと、パターンが一定しているわけでもないため、どこに問題があるのかが分かりません。確認してみるべき点について色々お教え頂ければ幸いです。 記 ◎年齢計算に使っている関数は以下の通りです。 =Trim(IIf(Format([生年月日],"mm/dd")>=Format(Now(),"mm/dd"),DateDiff("yyyy",[生年月日],Now()),DateDiff("yyyy",[生年月日],Now())-1) & "歳") 「生年月日」フィールドに西暦で生年月日が格納されており、レポートを印刷する時点での日付と誕生日を比較することで、単純に年数の引き算をしたり、更に1を引いたりしています。 以上

  • EXCEL VBA コードをスマートに

    EXCEL VBAのフォームで、 テキストボックスの値をあらかじめTextBox1に入力しておくコードを 書いてみました。 Private Sub UserForm_Initialize() TextBox1.Value = Cells(4, 1) & Cells(4, 3) & Cells(4, 5) & Cells(4, 7) & Cells(6, 1) & Cells(6, 3) & Cells(6, 5) & Cells(6, 7)Cells(8, 1) & Cells(8, 3) & Cells(8, 5) & Cells(8, 7).Value End Sub 実際はもっと長いです・・・ どうしたら、スマートに記述できますか? お知恵をお貸しください!!!

  • excel-vba

    エクセルVBAで Case Cells(50,"A") Case Cells(51,"A") Case Cells(52,"A") などを更にsheet1のCells(50,"A")とかするにはどう記述すればいいのでしょうか。 ただしこのマクロ(コード)はsheet2を処理対象としているsheet2に含まれているものとします。 (素人なのですがこういう言い方はおかしいですか。マクロってシートごとにも使うマクロを変えることできるんですよね?  Sheet1用のMACROsheet1、Sheet2用のMACROsheet2で互いのシートの上のデータを処理する。)

  • エクセルで年齢の計算の仕方

    エクセルで年齢を計算するのにDATEDIF(A1,today(),"Y")が良く使われますが、 法律上正確に考えるとDATEDIF(A1,today()+1,"Y")が正しいのではないでしょうか。 このようなことを解説したもの(サイト)が見つからないので質問しました。 ちなみに、年齢加算は法律上、誕生日の前日となっています。 それに基づくとDATEDIF(A1,today()+1,"Y")だと思いますが、この書き方だと計算結果に何か問題が発生するでしょうか。