在计算工龄、发票报销期限等日期计算应用中,经常要求两个日期的时间差以“0年0个月0天”的样式表现。
示例13-47 计算员工在职时长
图13-71为某公司离职员工信息表的部分内容,需要根据入职日期和离职日期计算在职时长,结果以年、月、日样式显示。
在E2单元格中输入以下公式,并向下复制到E10单元格。
=DATEDIF(B2,D2,"Y")&"年"&DATEDIF(B2,D2,"YM")&"个月"&DATEDIF(B2,D2,"MD")&"天"
公式中使用了3个DATEDIF函数。第二参数分别使用“Y”,计算时间段中的整年数;使用“YM”,忽略日和年计算日期相差的月数;使用“MD”,忽略月和年计算日期相差的天数。
最后将3个函数的计算结果与字符串“年”“个月”“天”进行连接,最终得到“0年0个月0天”样式的结果。
由于月份和天数均不会超过两位数,也可使用以下公式完成计算。
=TEXT(SUM(DATEDIF(B2,D2,{"Y","YM","MD"})*{10000,100,1}),"0年00个月00天")
计算结果如图13-72中的F列所示。
以F2单元格公式为例,DATEDIF函数的第二参数使用常量数组{"Y","YM","MD"},分别计算时间段中的整年数、忽略日和年的相差月数、忽略月和年的相差天数,返回内存数组{0,9,20}。
用该内存数组与{10000,100,1}相乘,即年数乘10000,月数乘100,天数乘1。使用SUM函数求和后得到结果为920。
TEXT函数的第二参数中包含5个0,如果SUM函数的结果不足5位,则在最左侧以0补齐。本例中,即是将920变成00920处理。
使用格式代码“0年00个月00天”,分别在数值右起第一位后面加上字符“天”,右起第三位后面加上字符“个月”,右起第五位后面加上字符“年”,最终得到“0年00个月00天”样式的结果。