外見
なお年齢欄はすべて
=ABS(ROW()-COLUMN())+1
です。
VBAコードを除いた雛形はこちらからどうぞ。
コード
Private Sub Commandbutton1_Click()
Dim Row As Long, column As Long
Dim 出生年 As String, 当該年 As String, 数え年 As Variant
出生年 = Range("I2").Value
当該年 = Range("I3").Value
On Error Resume Next
Row = WorksheetFunction.XMatch(出生年, Range("E7:E186"), 1)
column = WorksheetFunction.XMatch(当該年, Range("G5:GD5"), 1)
数え年 = WorksheetFunction.Index(Range("G7:GD186"), Row, column)
On Error GoTo 0
'MsgBox "年齢は" & 数え年 & "です"
Range("L2").Value = 数え年
End Sub
メッセージボックスがわずらわしい場合、省いても問題なく動作します。
使用例
「当該年」は没年にしました。
1.織田信長 17,531日間
2.豊臣秀吉 22,456日間
3.徳川家康 26,777日間
利点
数え年は生まれた年に「1歳」となり、正月を迎えると「2歳」になります。「0歳」という概念は存在しません。大晦日生まれの新生児は翌日には「2歳」となります。逆に言えば出生日に関係なく年齢計算できます。年間日数が異なり、閏月のないユリウス暦やグレゴリオ暦に置き換えると最大3ヶ月ズレが生じますがこれを防げます。改元年を未来年号に書き換えるような手荒なまねもしません。なにより史料に書かれた年齢が数え年である点、20世紀後半まで長く使われた数え年を無理に満年齢に置き換えずにすむ点、この二点が最大のアドバンテージと考えます。
暦については
これ(暦の問題、引用者註)は、一見些末でもあり、長期的な把握のなかでは不要な場合もありうるが、看過できない要素である。
伊川健二「戦国時代の多様な対外関係」69頁、『歴史評論』852号、2021年)
と指摘されています。
2021年3月19日追記
1950年、大阪市長近藤博夫は『生活科学』3巻1号の巻頭言「若返りの新年」で、数え年に馴れた世代の満年齢への移行に関して興味深い告白をしている。
https://doi.org/10.11468/seikatsueisei1948.3.1