我们爱民主、我们爱自由、我们也爱财富!我们尊孔子、我们尊老子、我们同尊管子!

安德管仲网管仲论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

微信扫一扫 分享朋友圈

已有 1706 人浏览分享

开启左侧

做工作学函数(08)

[复制链接]
1706 0


要求:

1、当年入职在15号前算一个月出勤,16号后入职则当月不算出勤月;

2、如果累计病事假不超过15天,不扣除出勤月分数,如果超过15天(含),扣除一个月出勤。


一、计算出勤月数

E7:=MIN(12,DATEDIF($D7,DATE($C$4,12,31),"M")+IF(DAY($D7)<=15,1,0))

函数说明

1、min

函数表达式=min(number1,number2,...)

用途:从多个数或者一个与区域里找出最小值。

2、datedif

函数表达式=datedif(start_date,end_date,unit)

用途:计算两个日期之间的整年数参数用"Y"、整月数参数用"M"、天数参数用"D"。

3、if

函数表达式:=if(logical_test,value_if_true,value_if_false)

用途:如果合同类别没有填时返回空值,有填写合同类别,用函数组合计算流水号。

4、day

函数表达式:=day(serial_number)

用途:将日期中的天取出来。

5、嵌套公式说明

公式段1:IF(DAY($D7)<=15,1,0)

如果入职在15号前,加1个月,如果是16号后加0个月。

公式段2:DATEDIF($D7,DATE($C$4,12,31),"M")

计算入职日期到计算年终奖这一年的12月31号,共计出勤了多少个月。

MIN(12,公式段2+公式段1)

如果超过12个月按12个月算,没有超过12个月显示实际工作月份数。


二、请假扣除月数

G7:=ROUNDUP(INT($F7/15)/2,0)

1、int

函数表达式:=int(number)

把数值或者公式计算的结果取整数。

2、roundup

函数表达式:=roundup(number,num_digits)

用途:将数值或者公式计算结果,保留指定小数位,并向上舍入。

由于超过半个月要扣一个月。比如45天是1.5个月,要扣2个月,而44天则不足1.5月,只扣1个月。

所以我们先把日期计算出有多少个15天(不足15天的通过int舍弃小数部分)。再/2,只可能有两种结果:完全除尽、位数是0.5。所以,这个时候要用向上舍入的roundup函数来实现。

3、嵌套公式说明

巧妙利用int舍弃和roundup向上舍入,以15天作为单元,来计算扣除年终奖的月数。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

1

关注

53

粉丝

2233

主题
精彩推荐
热门资讯
网友晒图
图文推荐

小黑屋|Archiver|安德管仲网 ( 粤ICP备20002412号 )

GMT+8, 2024-12-22 15:30 , Processed in 0.055521 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.