[[20210914125736]] 『生年月日から年度頭年齢をVBAで』(かじやさん) ページの最後に飛ぶ

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

 

『生年月日から年度頭年齢をVBAで』(かじやさん)

生年月日から、年度頭年齢を算出したいです。
A1セルに入っている生年月日をもとに、B1セルに年度頭年齢を入力したいのですが、シート関数を使いたくありません。
VBAでできますか?

< 使用 Excel:Excel2016、使用 OS:Windows10 >


年度頭年齢とは?

シート関数でできているなら、数式を提示していただければ回答が付きやすいでしょう。

(わからん) 2021/09/14(火) 13:15


失礼しました。
その年度の4月1日の年齢のことです。
4月〜12月なら、その年の4月1日の年齢を、1月〜3月なら前年の4月1日の年齢を知りたいです。

一応、A1セルに生年月日を入れて↓のシート関数をB1セルに放り込めば正しい結果は出るのですが、今回は関数を使うと上手く表が作れなくなるため、できればVBAで解決したいです。

=DATEDIF(A1,IF(MONTH(TODAY())>4,DATEVALUE(YEAR(TODAY())&"/04/01"),DATEVALUE(YEAR(TODAY())&"/04/01")),"Y")
(かじやさん) 2021/09/15(水) 23:14


追記します。
生年月日が入っているのはA1セルだけではなく、A2以下十数行もです。
それらの生年月日に対応する4月1日時点の年齢を、B列に表示したいです。
(かじやさん) 2021/09/15(水) 23:32

  =DATEDIF(A1,IF(MONTH(TODAY())>4,DATEVALUE(YEAR(TODAY())&"/04/01"),DATEVALUE(YEAR(TODAY())&"/04/01")),"Y")
                                  ~~~~~~~~~~~~~↑~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~↑~~~~~~~~~~~~~~~~
                       まったく同じですよ?      まったく同じ

  関数なら =DATEDIF(A1,DATE(YEAR(TODAY()),4,1),"Y") でいいです。

  で、4/2以降生まれた人は、274日足してやると翌年の生まれの人と同じになります。
  すると歳は、「今年の年」-「水増し年」でも算出できます。

  つまり、=YEAR(TODAY())-YEAR(A3+274) 

  VBAなら

  Sub age()
      Debug.Print Year(Date) - Year(Range("A1") + 274)
  End Sub

 Sub age()
     Dim cel As Range

     For Each cel In Range("A1:A10")
         cel.Offset(, 1) = Year(Date) - Year(cel + 274)
     Next
 End Sub

(半平太) 2021/09/15(水) 23:54


datedifの開始日に変数を入れることができれば解決なのですが、試す限りでは無理そうですね…。
(かじやさん) 2021/09/16(木) 16:52

 >試す限りでは無理そうですね…。

 無理じゃないと思いますが、
 質問は、これだったんじゃないですか?
      ↓
 >VBAでできますか?

 VBA案を書きましたけど、読んでないのですか?

(半平太) 2021/09/16(木) 17:01


コメント返信:

[ 一覧(最新更新順) ]


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