【日期函数应用实例】

日期函数应用

      • 概览
      • 计算加班时长
      • 动态考勤表
      • 回家倒计时
      • 合同到期提醒
      • 员工周岁计算
      • 工作日统计/完工日期
        • networkdays /networkday.intl 函数
        • workday / workday.intl

概览

日期函数要点总览

计算加班时长

思路:

  • 假设19:00 后算加班时间,我们用下班时间 直接减去19:00,会得到一个小数,单位是天。("19:00"要加双引号,否则默认是文本无法计算)=B2-“19:00”
  • 那么不加班的人会得到一个负值,我们可以用Max函数给它加一个数0,max就会在这两个数之间取更大的值。负值比0小会取0,正值就取它本身。=max(B2-“19:00”,0)
  • 但是得到的这个小数不直观,需要换算成小时。一天24小时,就再乘以24,=max(B2-“19:00”,0)*24
  • 最后的小数太长,需要取整,或者保留一位(看情况)。假设要四舍五入的取整,用 =Round(数字,取几位小数) =round(max(B2-“19:00”,0)*24,0)
  • 另外,如果单位是分钟,就再乘以60。再精细一点,做成xx小时xx分钟,那么公式:=INT((A2-B2)*24)&“小时”&(A2-B2)2460-INT((A2-B2)*24)*60&“分钟”
  • INT函数是去掉小数部分直接取整,那么,小时 部分直接取整即可,分钟就是整个值减去整数部分
  • 如图:不想要负值就再套一个max,如果结果需要计算,不能改变性质,就在自定义格式里加单位在这里插入图片描述

动态考勤表

如图:
在这里插入图片描述

  • 首先,用【date函数】做第一个动态效果。包含(年月日)三个参数,因为每个月的天数不同,所以日期要与年月日绑定在一起,才不会出错。
  • 上图中,我把年份放在F4,月份放在B4。所以第一天(B8):=DATE(F4,B4,1),这时候可不能贸然向后拉,既然已知第一天,此后每一天都加1不就可以了,那么第二天:=DATE(F4,B4,1)+1 或者=B8+1,这时候再往后填充到31。
  • 欸?怎么都是2024/9/1的样式,在不改变日期本质的情况下,Ctrl+1调出单元格格式,自定义为:d 就好啦
  • 接下来给每一天标上周几,用【weekday函数】,=WEEKDAY(B8,1)(这里B8虽然只显示day,但它是一个完整的日期哦)第二参数是1,表示,每周第一天从周日开始,虽然这不是中国人的习惯,但是阳历是这样的哦。默认阿拉伯数字,同样是自定义格式:aaa,就可以变成中文啦
  • 给周末加上填充色,我们用【条件格式】来做。注意选好范围。自定义公式:=WEEKDAY(B8,2)>5,这时候第二参数为什么选2了呢,因为2表示一周从周一开始,周末是6和7,写公式比较容易。
  • 最后是年份和月份的动态效果。我们可以看到它们右边都有一个按钮,怎么加上去呢。首先在工具栏空白的位置右键,(R)【自定义功能区】,右侧找到【开发工具】,勾上确定。在开发工具栏里【插入】,找到【数值调节按钮】,注意不要点错啦,下面那个是滑动条,是不是长得很像?看下图:
  • 给它放在合适的位置,调好大小。接着就要绑定单元格,这样才能控制年份的大小哦。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

回家倒计时

效果图:
在这里插入图片描述

倒计时会每天更新
思路:

  • 显然,回家倒计时也就是离回家(放假)还剩几天,那就要用到datedif,这是个隐藏函数,要全部打出来不可以偷懒的
  • 参数:起始时间是今天,today();结束时间假设是春节,今年是2025/1/29,我们用date函数来表示这一天:date(2025,1,29);计算相差的总天数:“d”
  • 那么公式:=DATEDIF(TODAY(),DATE(2025,1,29),“d”)
    当然这时间还是太长了,如果改成:“还需要工作多少天” ,那就要用到 networkdays.intl()
  • 至于样式,<蝴蝶结>和<鼠标箭头>在 <插入图标>里。蝴蝶结下方垫了白色形状以避免线条杂乱。
  • “年终倒计时”在圆角矩形上面编辑文字,圆角矩形是有<柔化边缘>效果
  • “166天”上面覆盖了一个渐变填充白色的矩形,以中心向四周渐变,中心透明度100%,于是才能露出底层的粉色和文字

合同到期提醒

首先要有一张合同期限的表,起止时间分别列好,日期格式正确
依然是datedif 函数,起始时间是今天;
结束时间假如是C2,那也就是=datedif(today(),C2,“d”)
根据需求缓急来设置提醒,用条件格式。
如:还剩50天到期的用黄色填充,30天用橙色预警,15天红色。

  • 先选中所有合同项目名,<条件格式>自定义:=datedif(today(),C2,“d”)<=50,
  • 格式:淡黄色填充。以此类推……

员工周岁计算

假设出生日期在D列
公式:=datedif(D2,today(),“y”)
如要特别详细变态的,精确到天,那:
=DATEDIF(D2,today(),“y”)&“岁零”&DATEDIF(D2,today(),“ym”)&“月”&DATEDIF(D2,today(),“md”)&“天”
在这里插入图片描述
效果如图

工作日统计/完工日期

networkdays /networkday.intl 函数

它们的参数分别如下:
networkdays 一般是默认双休,就是周六周日休息。
networkday.intl 则给你很多选项,一般单休选11,周日休
在这里插入图片描述
节假日也就是会自动排除放假的日期,需要自行准备好时间跨度内的节假日表格,可以多但不能少。
每一天都要单独占一个单元格,时间也要规范,例:
在这里插入图片描述
△!需要注意的是:最后一个参数,只能框选这张表里的日期,表头也不行,要是选到了文本,就会出现错误哦~
我这里区域(紫色)是从B2 开始的哦,记得绝对引用,如果担心选错,可以先把这部分自定义一个中文名,函数里直接输入就可以
在这里插入图片描述
如果network…intl 周末这块空出来,会默认是双休,如下图:
在这里插入图片描述

workday / workday.intl

参数如下
在这里插入图片描述
同样的,workday 默认是周末双休,相当于workday.intl 的第1 种周末类型。上图粉色部分结果相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值