『生年月日から年度頭年齢を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