求高手解释Excel公式计算工龄工资的意思,好像是每3年调1档!谢谢!

公式=IF(INT((INT(YEARFRAC($D$2,C3))+1)/3)>0,INT((INT(YEARFRAC($D$2,C3))+1)/3)+3,3)中,第一个参数中的+1是什么意思? /3 又是什么意思? 第二个参数中为什么+3 ? 谢谢!
2026年09月23日 22:04
有3个网友回答
网友(1):

这不是工龄的算法,而是某单位的特定算法,不足1年的按1年算,每3年加1档,最低为3档。

  1. YEARFRAC是计算两个日期差之间的天数与一年的天数的比值,此函数有三个参数,省略了第三参数,按每月30天/每年360天计;

  2. INT(YEARFRAC($D$2,C3))+1)中的+1,是实现不满1年按1年算,也就是实现向上取整的功能,与ROUNDUP(YEARFRAC($D$2,C3),0)、CEILING(YEARFRAC($D$2,C3),1)目的相同;

  3. /3再取整,是达到每3年加1档的目的,+3是基准,即不满3年的部分全部按3档算,以3档为起点。

再来说说此公式的不足之处:

  1. =IF(INT((INT(YEARFRAC($D$2,C3))+1)/3)>0,INT((INT(YEARFRAC($D$2,C3))+1)/3)+3,3)与直接使用=INT((INT(YEARFRAC($D$2,C3))+1)/3)+3是一样的,根本无须用条件公式;

  2. 绝对引用相对引用不清,不便于填充,对D2的列标也用了绝对引用,右拉填充时不会跟随变动,未对C3的列标加绝对引用符$,右拉填充时会变动列标,正确用法应该是:=INT((INT(YEARFRAC(D$2,$C3))+1)/3)+3;

  3. 此公式的结果,对于空白单元或当天来上班,结果都显示为3,显然不可取,要加以改正,如:=IF(OR($C3="",$C3>=D$2),"",INT((INT(YEARFRAC(D$2,$C3))+1)/3)+3)。

网友(2):

我这边只说函数的意思,是否有问题由你来判断。

=IF(INT((INT(YEARFRAC($D$2,C3))+1)/3)>0,INT((INT(YEARFRAC($D$2,C3))+1)/3)+3,3)

IF  判断,满足  (INT((INT(YEARFRAC($D$2,C3))+1)/3)>0   的条件时时输出  INT((INT(YEARFRAC($D$2,C3))+1)/3)+3   否则为3

先看判断条件  INT((INT(YEARFRAC($D$2,C3))+1)/3)>0

INT是向下取整的意思,比如1.1,或者1.9,都取值1

YEARFRAC 是计算两个日前值的差,比如数据中的$D$2,C3,其中D2为固定值。C3-D2为员工工作年限,向下取整,如不到一年为0,1年364天,为1年。

INT((INT(YEARFRAC($D$2,C3))+1)/3)>0 可以理解为   取整(取整(工作年限)+1)除以3如果大于0,那么输出  INT((INT(YEARFRAC($D$2,C3))+1)/3)+3  这个公式。但这个公式有问题,结果是必然大于0(因为有+1)的,也就是说,3不会为结果,只会存在一个结果

那我们来看结果

 INT((INT(YEARFRAC($D$2,C3))+1)/3)+3  

和判断条件一样,结果+3,假设员工来了11个月,结果是3.33,如果来了1年,结果过是3.66,如果是2年,结果过是4。

具体为什么这么算。真的不知道- -!

网友(3):

低于3年的算1档,而不是零档;
YEARFRAC 函数:返回小数。+1 /3 然后取整int,得到工龄档数。
INT()函数,功能为向下取整为最接近的整数;所以第二个参数+3;