|
楼主 |
发表于 2021-11-26 20:26
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
本帖最后由 bridge0321 于 2021-11-29 01:53 编辑
这个问题得使用if函数来判断
yearfrac无法精确得到日期的间隔准确值,总会有误差。而且这个误差我没有发现规律,且无法忽略NULL值。
datediff就更有误差了,当以year作为间隔单位时,datediff会始终返回年的差值。(如2000到2020,无论具体到月、日到哪一天,均返回20)
根据datediff这一特性,容易判断:
1、当order date的月日值在birth date的月日值后时,说明当年生日已经过了(年的差值=实岁);
2、当order date的月日值与birth date的月日值相等时,说明当天是其生日(年的差值=实岁);
3、反之,当order date的月日值在birth date的月日值前时,说明当年生日未到(年的差值=虚岁,所以实岁=虚岁-1)。
所以,代码如下:- =
- IF(
- ( MONTH('Sales'[Order Date]) = MONTH('Sales'[生日日期]) && DAY('Sales'[Order Date]) >= DAY('Sales'[生日日期]) )
- || MONTH('Sales'[Order Date]) > MONTH('Sales'[生日日期]),
- DATEDIFF('Sales'[生日日期], 'Sales'[Order Date], YEAR),
- DATEDIFF('Sales'[生日日期], 'Sales'[Order Date], YEAR) - 1
- )
复制代码
|
|