Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 4841|回复: 6

员工工龄统计表

[复制链接]
发表于 2013-6-13 12:42 | 显示全部楼层 |阅读模式
5学分
1、   编写程序,根据参加工作时间,自动实现计算工龄的功能(实例53\最终文件)
知识点:相关系统时间函数的使用;循环语句;
提示:1)若当前月份小于工作的起始月份,要向年借一位。2)将工龄转换成汉字时要考虑:员工工龄是否满一年及员工工龄是否满一月的情况

实例53.zip

13.79 KB, 下载次数: 68

最佳答案

查看完整内容

你看是这样的吗,我把结果放在“G,H,I”列。另外你的结果可能是以5月为准算的,算在是6月了,所以我的结果比你的结果大一个月。
发表于 2013-6-13 12:42 | 显示全部楼层
你看是这样的吗,我把结果放在“G,H,I”列。另外你的结果可能是以5月为准算的,算在是6月了,所以我的结果比你的结果大一个月。

员工工龄统计表.zip

18.87 KB, 下载次数: 81

回复

使用道具 举报

 楼主| 发表于 2013-6-13 18:52 | 显示全部楼层
lyf7276 发表于 2013-6-13 16:27
你看是这样的吗,我把结果放在“G,H,I”列。另外你的结果可能是以5月为准算的,算在是6月了,所以我的结果 ...

求代码。我需要自己操作的
回复

使用道具 举报

 楼主| 发表于 2013-6-13 19:16 | 显示全部楼层
lyf7276 发表于 2013-6-13 12:42
你看是这样的吗,我把结果放在“G,H,I”列。另外你的结果可能是以5月为准算的,算在是6月了,所以我的结果 ...

感恩的心,感谢有你
回复

使用道具 举报

发表于 2013-6-13 20:41 | 显示全部楼层
Sub 工龄()

m = Cells.Find("*", , , , , xlPrevious).Row
For i = 3 To m
If Range("b" & i) Like "*年*" Then
mmy = InStr(Range("b" & i), "年") + 1
mmw = InStr(Range("b" & i), "月")
n = Mid(Range("b" & i), mmy, mmw - mmy)
arr = Array("一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二")

nn = Application.Match(n, arr, 0)
mm = Left(Range("b" & i), 4)
hi = VBA.DateSerial(mm, nn, 1)
mw = VBA.DateDiff("m", hi, Date)
my = Int(mw / 12)
zz = mw Mod 12
Range("h" & i) = zz
Range("g" & i) = my
If zz = 0 Then
Range("i" & i) = my & "年整"
Else
Range("i" & i) = my & "年零" & zz & "个月"
End If

Else
mw = VBA.DateDiff("m", Range("b" & i), Date)
my = Int(mw / 12)
zz = mw Mod 12
Range("h" & i) = zz
Range("g" & i) = my
If zz = 0 Then
Range("i" & i) = my & "年整"
Else
Range("i" & i) = my & "年零" & zz & "个月"
End If
End If
Next
End Sub
回复

使用道具 举报

发表于 2013-6-13 21:35 | 显示全部楼层
学习下下,{:251:}
回复

使用道具 举报

发表于 2013-6-15 23:52 | 显示全部楼层
学习一下                     
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-10 15:12 , Processed in 0.742641 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表