• ベストアンサー

Access VBA DateDiff関数

こんにちは。Access VBA初心者です。 誕生年月日と指定年月日で年齢を算出したいのですが、 DateDiff関数を使用して年齢を算出できるものなのでしょうか? 誕生年月日には"19691121" 指定年月日には"20070901" とあった場合、年齢が 37 と算出出来るように計算させたいのですが、 どうぞよろしくお願いいたします。

  • rariko
  • お礼率28% (223/790)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

今年の誕生日を過ぎていないなら、1をマイナスすれば年齢を計算できます。 If format(誕生日,"MMDD") >= format(Day,"MMDD") then   age = DateDiff("YYYY",誕生日,Date) -1 else   age = DateDiff("YYYY",誕生日,Date) end if

rariko
質問者

お礼

お礼が遅くなり申し訳ありません。 無事作成できました。 ありがとうございました。

その他の回答 (1)

noname#140971
noname#140971
回答No.2

[イミディエイト] ? GetAge("2004/02/29", "2005/02/28") 1 Public Function GetAge(ByVal Birthday As Date, ByVal Hiduke As Date) As Integer   GetAge = DateDiff("yyyy", Birthday, Hiduke) + _        (Format(Birthday - 1, "mm/dd") > Format(Hiduke, "mm/dd")) End Function 問題は、この関数が正しいかどうかですね。 http://www.uoffice.net/apl/nenrei.htm とは一致するんですが、自信はありません。

rariko
質問者

お礼

お礼が遅くなり申し訳ありません。 ご丁寧な回答ありがとうございました。

関連するQ&A

  • Access datediff関数について

    クエリを使って、社員の定年までの年数を計算したいと 思っています。 datediff関数を使うのかなと思いますが、行き詰ってしまいました。 <テーブルフィルード名> ・氏名 ・今日の日付 ・生年月日 など <クエリ> で定年までの年数を調べたいので、 ・氏名フィールド ・演算式フィールドとして 定年までの年数:([今日の日付],[???],"Y") かなと考えています。???の部分も式が分からないのですが 教えて頂けないでしょうか? よろしくお願いいたします。

  • Accessの関数について

    Accessのフォーム作成から氏名、生年月日、年齢といったかんじでデータを作成し、生年月日を入力したら年齢も自動的に表示されるようにしたいのですが、関数の定義がわからないので教えてもらえないでしょうか。 フォームのデザインビューからプロパティ→年齢のテキストボックスを指定し、テキストボックス年齢のプロパティが開かれます。コントロールソースの項目からビルドボタンをクリックすると、式ビルダが開かれます。生年月日の表示方式は 生年月日 1999/09/09 といった表示方法をとっています。Excelだと、datedif関数で、 datedif("生年月日","2002/10/1","y")で年齢を算出できたので、もしかしたらAccessでも定義できるんではないかと思いまして質問いたしました。

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

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

  • ACCESS97で現在の日付から勤続年月数を算出する関数

    ACCESS97で社員名簿を作っています。 現在の日付から年齢を算出する関数は調べたところ次のようにすればよいとわかりました。 IIf(Right(Format([生年月日],"yyyy/mm/dd"),5)>Right(Format(Now(),"yyyy/mm/dd"),5),DateDiff("yyyy",[生年月日],Now())-1,DateDiff("yyyy",[生年月日],Now())) 次は現在日から入社年月日フィールドにあるデータを使い、勤続年数○年○ヶ月というクエリーを作りたいのですが、○ヶ月を算出する応用がわからずに困っております。 どうかよろしくお願いします。

  • 【ACCESS】未定義関数が発生。「最適化/修復」で戻ります。

    ACCESSのモジュールで「生年月日」から「年齢」を計算させるために、以下のコードを使用しています。 ----------------------------------------------- Function 年齢(生年月日) As Integer If IsNull(生年月日) Then 年齢 = 0: Exit Function 年齢 = DateDiff("yyyy", 生年月日, Date) If Date < DateSerial(Year(Date), Month(生年月日), Day(生年月日)) Then 年齢 = 年齢 - 1 End If End Function ----------------------------------------------- 通常は普通に使えているのですが、時々「未定義関数"年齢"があります」と出てしまいます。 それを「ツール」→「ユーティリティ」→「最適化/修復」すると普通に使えるようになるのですが、しばらくすると上記メッセージが出て、また繰り返してしまいます。 原因がわからず対処策も立てられない状態です。 お知恵をお貸し頂けると幸いです。

  • Access 2000での年齢計算

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

  • アクセス 指定日から将来の指定日までを算出する式を知りたい

    アクセス2000 職員の人事データ管理をしています。テーブルのフィールドに職員の生年月日や採用年月日を入力しています。 このフィールドをもとに、将来の指定日までの期間を算出したいのです。例えばS50年4月1日に採用された人が来年の平成16年3月31日現在での勤務年月を算出したいのです。 某QAサイトの類似質問に「12月31日現在の年齢の出し方がわからない。今日以降の年齢も算出できるのか?」というのがあり、その答えに「DateDiff("yyyy",[誕生日],Format(date,"yyyy")& "/12/31")」とありましたので、自分のテーブルをもとに、とりあえず今年の12月31日現在の勤務期間を出してみようと「DateDiff("yyyy",[採用年月日],Format(date,"yyyy")」& "/12/31")と入力したところ「パラメータの入力 採用年月日」というダイアログが出てしまいました。うーん、恥ずかしながらこの意味も分からない。 採用年月日などの過去の指定日から、年度末時など将来の指定日までの期間(年月)を算出するための式を教えていただけないでしょうか。

  • 生年月日から年齢を計算したい。

    アクセスのクリエを使って、年齢を年・月単位で計算をしたいのですで教えてください。 過去のある月に遡って、生年月日から年齢を出したいのです。 フィールドには、[生年月日]があるのでDateDiff関数を 使えばよいと思うのですが、うまくいきません。ご存知の方、アドバイスをお願いします。

  • Access2007で社員マスターを作成しています。

    Access2007で社員マスターを作成しています。 入社年月日を基準として、基準日の時点での年齢を生年月日から自動計算させています。 =Int(DateDiff("d",[生年月日],[入社年月日])/365.25) ただし、法律上は、誕生日の前日に歳をとることになっていますので、そのように設定をしたいのです。 たとえば、入社年月日が2010/9/15で生年月日が1980/9/15の人は30歳で、入社年月日が同じく2010/9/15で生年月日が1980/9/16の人も30歳。入社年月日が2010/9/15で生年月日が1980/9/17の人は29歳というようにしたいのです。 宜しくお願い致します。

  • ロータス機能のエクセルでの実現について

     ロータス123では、データベース関数の条件式をデータベース内のデータ個別に変更することが可能(データベース関数の条件式がデータ個別に変更可能)でしたが、エクセルでは条件式をセルで表現しなければならないので、困っています。  例  1000人分の生年月日が入力されたセルがあり、現在年齢を算出し、ある年齢のデータ数を数える。  このような場合、123ではデータテーブルに一切触らずに1セル1行の関数で計算できたのに、エクセルでは別に1セルを年齢計算結果として使用せざるを得ず、テーブルの様式やシート構造を変更できないデータの場合困っています。  123の例 DSUM関数の条件式にDGET関数とDATEDIFF関数を組み込む  今のところ、全てVBAで組んでいます(VBAで年齢計算し、セル書き出し)が、後々の担当者のことを考えるとできたら関数で表現したいのですが、どなたかお分かりの方がいらっしゃったらお教えください。

専門家に質問してみよう