excel 工龄计算

来源:百度知道 编辑:UC知道 时间:2024/06/06 19:51:53
怎样用EXCEL自动计算工龄,比如A1是入职日期,B1就是工龄,
要求如下:
1、A1的格式为:如 2009-03-02
2、B1显示的格式为:不足一年的按月显示,如:3个月 5个月 11个月;满一年的显示为 X年X个月 如:1年4个月

核算为条件为:
1、如果入职日期在当月的15日以前(包含15日)的,从当月1日开始计算,比如2009-03-15的按03月01日开始计算工龄;
2、如果入职日期在当月的15日以后的,从下月1日开始计算,比如2009-03-16的按04月01日开始计算工龄;
3、工龄核算截止日期为当前系统日期的上月月底,如今天是2009-05-25,按2009年04月30日为截止日期
4、要求每次可以更新最新计算的工龄,比如上月某人的工龄为3个月,那本月更新完后,应显示为4个月

最简单的就是用宏编写一个小程序就搞定了,单纯用公式会很麻烦。

补充:你的表格我看过了,
代码如下:

Sub 计算工龄()
Dim a
For a = 2 To 60000
If Cells(a, 3) = "" Then GoTo wc
l = Cells(a, 3)
n = Year(l)
y = Month(l)
r = Day(l)
nn = Year(Date)
ny = Month(Date)
If r > 15 Then y = y + 1
yc = (nn - n) * 12 + (ny - y)
nll = Int(yc / 12)
w = nll * 12
gl = yc - w
If w > 0 Then
If gl = 0 Then
Cells(a, 4) = nll & "年整"
Else
Cells(a, 4) = nll & "年零" & gl & "个月"
End If
ElseIf yc > 0 And yc < 12 Then
Cells(a, 4) = gl & "个月"
Else
Cells(a, 4) = "还没来呢"
End If
Next a
wc:
End Sub

上月底日期 x =DATE(YEAR(TODAY()),MONTH(TODAY()),1)-1
入职日期修正为 y =DATE(YEAR(A1),MONTH(A1)+(DAY(A1)>15),1)
b1 公式 z =datedif(y,x,"Y")&"年 "&mod(datedif(y,x,"m"),12)&"个月"