Google Sheets DATEDIF函数计算天数异常,求解决或替代方案
解决Google Sheets中DATEDIF函数"MD"参数的天数计算问题
问题原因
你猜测的没错,Google Sheets里的DATEDIF函数使用"MD"参数时,确实是按每月30天来计算天数差的,这就导致跨月的日期计算会出现偏差,比如1月1日和2月1日对比今日的天数部分会显示相同结果。
修复/变通方法
方法1:通过构造当年生日日期计算准确天数
用DATE函数生成与生日同日月的当年日期,再用今日日期减去这个日期得到精准天数:
=DATEDIF(A1,TODAY(),"Y")&" years "&DATEDIF(A1,TODAY(),"YM")&" months "&MAX(0,TODAY()-DATE(YEAR(TODAY()),MONTH(A1),DAY(A1)))&" days"
原理:DATE(YEAR(TODAY()),MONTH(A1),DAY(A1))生成当年的生日日期,TODAY()减去它直接得到真实天数差,MAX(0,...)用于避免当年生日未到时出现负数结果。
方法2:结合EDATE函数计算天数
先将生日日期调整到与今日同年月的对应日期,再用今日的天数减去该日期的天数:
=DATEDIF(A1,TODAY(),"Y")&" years "&DATEDIF(A1,TODAY(),"YM")&" months "&DAY(TODAY())-DAY(EDATE(A1,DATEDIF(A1,TODAY(),"Y")*12+DATEDIF(A1,TODAY(),"YM")))&" days"
原理:EDATE函数根据已算出的年数和月数,把生日日期同步到当前年月,再通过天数相减得到准确差值。
内容的提问来源于stack exchange,提问作者Steven Morgan
相关产品推荐
相关产品推荐

