计算周岁时,并不是简单地用当前年份减去出生年份,而是要考虑到年、月和日三方面的因素。也就是很多人说的,生日还没到,还没满18岁。😁

日期格式

因为我们的生日是用日期表示,因此在计算周岁之前,我们还要从 Excel 的角度去认识何为日期。

Excel 官方手册对日期是这样解释的:

Excel stores dates as sequential serial numbers so that they can be used in calculations. January 1, 1900 is serial number 1, and January 1, 2008 is serial number 39448 because it is 39,447 days after January 1, 1900. You will need to change the number format (Format Cells) in order to display a proper date.

Excel 在存储日期时,为了方便计算,就将日期以一种序列号的格式存储。至于什么是序列号,其实很好理解:如果将 1900/01/01 当作起点,那么我们就可以使用序列号 1 来表示它。自然而然地,我们就可以用序列号 2 来表示 1900/01/02。过了 39446 天后,我么可以用序列号 39448 来表示 2008/01/01。

就这样,通过将日期数据变成整数,我们就可以利用整数的计算法则来计算日期。

周岁计算原理

计算原理其实非常简单,就是将当天的日期序列号减去出生时日期序列号,然后通过向下取整判断有没有满年。

很明显,如果生日过了,就满年了,生日没过,就没满年。

用 YEARFRAC 计算周岁

YEARFRAC 函数计算指定的开始时间和指定的结束时间之间的天数和全年天数的百分比。

1
2
3
4
5
6
7
8
YEARFRAC(start_date, end_date, [basis])

例子
=INT(YEARFRAC(DATE(2021,9,12),DATE(2022,9,13), 1)) 结果是 1 岁。生日过了。
=INT(YEARFRAC(DATE(2021,9,12),DATE(2022,9,11), 1)) 结果是 0 岁,生日没过。

# 可选参数basis通常取1,代表用年的实际天数。
# INT函数是向下取整数学函数。此处是将YEARFRAC函数计算结果向下取整。