当前位置: 首页 > news >正文

使用Excel计算--任务完成总工作日时长

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

引言

计算任务完成时间周期,和计算金钱一样,是一个比较细致严谨的工作。

通常,我们可能以为,完成周期形如:
任务完成周期 = 任务结束时间 - 任务开始时间

但是一般情况下,对于正常社会企业,通常都是要把排除掉休息日,来计算的任务完成周期。

而要排除休息日就是一个比较复杂的事情了。

1. 识别工作日与休息日

首先节假日本身的规律性不是很强,每年都会不同,我们知道,节假日的计算要考虑几种情况

  1. 周末双休日;
  2. 因法定节假日调整的休息日(非周末);
  3. 因法定节假日调整的工作日(周末);

所以

一年中的休息日 = 周末双休日总和 + 因法定节假日调整的休息日(非周末) - 因法定节假日调整的工作日(周末)
一年中的工作日 = 一年的天数总数 - 一年中的休息日

Excel中工作日天数计算:
(注意计算粒度是天,相当于从任务开始日期的00:00:00,到任务结束日期的24:00:00)
([周末日]中填写的"0000000",代表周一到周日都不算休息日,统一在[节假日]中指定休息日)
([节假日]中列出所有的休息日,包括所有法定的休息日:周末休息日,非周末调整的节假日,但不包括调整为工作日的周末)

NETWORKDAYS.INTL(任务开始日期, 任务结束日期, “0000000”, [节假日])

Excel中休息日天数计算:

NETWORKDAYS.INTL(任务开始日期,任务结束日期,“0000000”) - NETWORKDAYS.INTL(任务开始日期, 任务结束日期, “0000000”, [节假日])

样例公式:

NETWORKDAYS.INTL(J3,K3,“0000000”)-NETWORKDAYS.INTL(J3,K3,“0000000”,O1:O19)

2. 计算任务完成的工作日时间段

下面就以“休息日”代指所有的法定的休息日;以“工作日”代指除“休息日”之外的法定工作日。

在许多项目中,主要要求计算的工作日时间,出现的场景可能有几种情况:

场景1. 开始在某个工作日,结束在某个工作日;
场景2. 开始在某个工作日,结束在某个休息日;
场景3. 开始在某个休息日,结束在某个工作日;
场景4. 开始在某个休息日,结束在某个休息日;

另外还有一些特殊场景:

场景5. 开始日与结束日在同一天时,该天是工作日;
场景6. 开始日与结束日在同一天时,该天是休息日;

注:任务开始时间、结束时间是带了时、分、秒

分别演算这些场景的计算公式情况,从而合理化的计算工作时间:
注:1天时间 = 24小时 = 1440分钟 = 86400秒

场景1:开始在某个工作日,结束在某个工作日

任务完成周期 = 任务结束时间 - 任务开始时间 - (任务周期中的休息日天数 * 1天时间)

场景2:开始在某个工作日,结束在某个休息日

任务完成周期 = 任务结束时间(格式化到24:00:00或23:59:59) - 任务开始时间 - (任务周期中的休息日天数 * 1天时间)
(调整方式:TEXT(任务结束时间,“yyyy/m/d 24:00:00”))

场景3. 开始在某个休息日,结束在某个工作日;

任务完成周期 = 任务结束时间- 任务开始时间(格式化到00:00:00) - (任务周期中的休息日天数 * 1天时间)
(调整方式:TEXT(任务开始时间,“yyyy/m/d 00:00:00”))

场景4. 开始在某个休息日,结束在某个休息日;

任务完成周期 = 任务结束时间(格式化到24:00:00或23:59:59) - 任务开始时间(格式化到00:00:00) - (任务周期中的休息日天数 * 1天时间)

场景5. 开始日与结束日在同一天时,该天是工作日;

任务完成周期 = 任务结束时间 - 任务开始时间
也适用场景1公式:
任务完成周期 = 任务结束时间 - 任务开始时间 - (任务周期中的休息日天数 * 1天时间)

场景6. 开始日与结束日在同一天时,该天是休息日;

任务完成周期 =0
也适用场景4公式:
任务完成周期 = 任务结束时间(格式化到24:00:00或23:59:59) - 任务开始时间(格式化到00:00:00) - (任务周期中的休息日天数 * 1天时间)

综合所有的场景之后,得出的综合公式如下:

  1. 如果任务结束时间是休息日,任务结束时间调整到24:00:00或23:59:59,工作日时保持不变;
  2. 如果任务开始时间是休息日,任务开始时间调整到00:00:00,工作日时保持不变;
  3. 任务完成周期 = 调整后任务结束时间 - 调整后任务开始时间 - (任务周期中的休息日天数 * 1天时间)

3. 计算公式

  1. 获取调整后时间:
    判定是否是休息日,可以使用TEXT(时间,“yyyy/m/d”)格式化日期,之后在休息日列表中IFERROR(MATCH(日期,[休息日]),0)查找
    开始时间调整方式:TEXT(任务开始时间,“yyyy/m/d 00:00:00”)
    结束时间调整方式:TEXT(任务结束时间,“yyyy/m/d 24:00:00”)
    EXCEL中使用IF语句来选取不同的值:IF (IFERROR( MATCH(TEXT(日期时间,“yyyy/m/d”),[休息日]) ,0), TEXT(日期时间,“yyyy/m/d 24:00:00”), 日期时间),获取到检查休息日调整后的时间
    样例公式,

开始时间:IF(IFERROR(MATCH(TEXT(j3,“yyyy/m/d”),O1:O19,0),0),TEXT(j3,“yyyy/m/d 00:00:00”),j3)
结束时间: IF(IFERROR(MATCH(TEXT(k3,“yyyy/m/d”),O1:O19,0),0),TEXT(k3,“yyyy/m/d 24:00:00”),k3)

  1. Excel中休息日天数计算:
    NETWORKDAYS.INTL(任务开始日期,任务结束日期,“0000000”) - NETWORKDAYS.INTL(任务开始日期, 任务结束日期, “0000000”, [节假日])
    样例公式,

NETWORKDAYS.INTL(J3,K3,“0000000”)-NETWORKDAYS.INTL(J3,K3,“0000000”,O1:O19)

  1. 总的计算时间段样例公式(算出的x.x天) :
    任务结束时间(格式化到24:00:00或23:59:59) - 任务开始时间(格式化到00:00:00) - 任务周期中的休息日天数

IF(IFERROR(MATCH(TEXT(K3,“yyyy/m/d”),O1:O19,0),0),TEXT(K3,“yyyy/m/d 24:00:00”),K3)
-IF(IFERROR(MATCH(TEXT(J3,“yyyy/m/d”),O1:O19,0),0),TEXT(J3,“yyyy/m/d 00:00:00”),J3)
-(NETWORKDAYS.INTL(J3,K3,“0000000”)-NETWORKDAYS.INTL(J3,K3,“0000000”,O1:O19))

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)

相关文章:

使用Excel计算--任务完成总工作日时长

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu) 引言 计算任务完成时间周期,和计算金钱一样,是一个比较细致严谨的工作。 通常,我们可能以为,完成周期形如: 任务完成周期 任务结束时间 - 任务开始时间 但是…...

JavaWeb后端登录校验功能(JWT令牌技术,Cookie技术,Session,拦截技术,过滤器)

目录 一.登录校验功能(解决直接通过路径访问) 1.实现思路 二.会话技术 ​编辑 1.Cookie技术 2.Session 3.令牌技术 1.简介 2.如何生成和解析 3.令牌的使用 三.Filter过滤器 1.什么是过滤器 2.实现步骤: 3.过滤器执行流程 4.拦截路径 5.过…...

7-上传下载

上传下载 首先创建一张上传文件的表,例如: drop table if exists sys_file_info; create table sys_file_info (file_id int(11) not null auto_increment comment 文件id,file_name varchar(50) default …...

数字图像处理(实践篇)三十六 OpenCV-Python 使用ORB和BFmatcher对两个输入图像的关键点进行匹配实践

目录 一 涉及的函数 二 实践 ORB(Oriented FAST and Rotated BRIEF)是一种特征点检测和描述算法,它结合了FAST关键点检测和BRIEF描述子。ORB算法具有以下优势: ①实时性:能够在实时应用中进行快速的特征点检测和描述。 ②...

算法每日一题: 边权重均等查询 | 公共子祖先

大家好,我是星恒,今天给大家带来的是一道图里面有关公共子祖先的题目,理解起来简单,大家 题目:leetcode 2846 现有一棵由 n 个节点组成的无向树,节点按从 0 到 n - 1 编号。给你一个整数 n 和一个长度为 n …...

使用JavaScript和XLSX.js将数据导出为Excel文件

目录 一、安装XLSX.js二、将数据转换为Excel文件 导出数据是Web应用程序中常见的功能之一。在许多情况下,我们需要将数据导出为Excel文件,以便用户可以在本地计算机上查看和编辑数据。在本篇博客中,我们将介绍如何使用JavaScript和XLSX.js将数…...

如何使用YOLOv8训练自己的模型

本文介绍如何用YOLO8训练自己的模型,我们开门见山,直接步入正题。 前言:用yolo8在自己的数据集上训练模型首先需要配置好YOLO8的环境,如果不会配置YOLO8环境可以参考本人主页的另一篇文章 提醒:使用GPU训练会大幅度加…...

机器学习-逻辑回归【手撕】

逻辑回归 在模式识别问题中,所输出的结果是分类,比如是否是猫,这时候无法通过简单的线性回归来实现问题。同时,与线性回归不同的是,逻辑回归是一种名为回归的线性分类器,并常用于二分类,其本质…...

内网安全:NTLM-Relay

目录 NTLM认证过程以及攻击面 NTLM Relay攻击 NTLM攻击总结 实验环境说明 域横向移动:NTLM中继攻击 攻击条件 实战一:NTLM中继攻击-CS转发上线MSF 原理示意图 一. CS代理转发 二. MSF架设路由 三. 适用smb_relay模块进行中继攻击 域横向移动…...

Tensorflow2.0笔记 - tensor的padding和tile

本笔记记录tensor的填充和tile操作,对应tf.pad和tf.tile import tensorflow as tf import numpy as nptf.__version__#pad做填充 # tf.pad( tensor,paddings, modeCONSTANT,nameNone) #1维tensor填充 tensor tf.random.uniform([5], maxval10, dtypetf.int32) pri…...

多媒体测试资源

目录 简介自己整理的文件测试资源列表 简介 音视频测试时,需要许多源文件,这里整理了一些.会持续更新.当然可以使用ffmpeg转换获得需要的文件. 如果知道的这方面资源的,在评论区留言. 自己整理的文件 有视频,图片,音频. 链接:https://pan.baidu.com/s/1vatLmWk…...

Wordpress seo优化该怎么做?

Wordpress作为开源管理系统,目前已然是世界上最流行的cms之一,这不仅仅因为他开源,对用户友好,让任何人都能轻而易举的制作网站,更是因为这套程序对于搜索引擎非常友好,是做谷歌seo的不二之选 Wordpress作为…...

Ultraleap 3Di示例Interactable Objects组件分析

该示例代码位置如下: 分析如下: Hover Enabled:悬停功能,手放在这个模型上,会触发我们手放在这个模型上的悬停功能。此时当手靠近模型的时候,手的模型的颜色会发生改变,反之,则不会…...

Vue自定义成功弹窗H5实现类似于小程序的效果

效果图&#xff1a; <div class"father"><div class"success-box" v-if"isSuccess"><img src"../../assets/insure/success-logo.png" alt""><span>{{ successTitle }}</span></div> &…...

Linux之父:我们正在从C语言转向Rust

最近&#xff0c;Linus在“Torvalds 演讲&#xff1a;人工智能对编程的影响”&#xff1a;“我们正在从C语言转向Rust”。 网友讨论&#xff1a; Linus 选择 Rust 是因为&#xff0c;这是一个中长期解决方案&#xff0c;解决了 IT 世界中缺乏 C/C 人员的实际问题&#xff0c;所…...

C++ qt标题栏组件绘制

本博文源于笔者在学习C qt制作的标题栏组件&#xff0c;主要包含了&#xff0c;最小化&#xff0c;最大化&#xff0c;关闭。读者在看到这篇博文的时候&#xff0c;可以直接查看如何使用的&#xff0c;会使用了&#xff0c;然后进行复制粘贴源码部分即可。 问题来源 想要制作…...

Mysql运维篇(三) MySQL备份与恢复

一路走来&#xff0c;所有遇到的人&#xff0c;帮助过我的、伤害过我的都是朋友&#xff0c;没有一个是敌人。如有侵权&#xff0c;请留言&#xff0c;我及时删除&#xff01; 一、物理备份与逻辑备份 1、物理备份&#xff1a;备份数据文件&#xff0c;转储数据库物理文件到某…...

数字图像处理(实践篇)二十七 Python-OpenCV 滑动条的使用

目录 1 涉及的函数 2 实践 1 涉及的函数 ⒈ setWindowProperty()用于设置GUI应用程序的属性 cv2.setWindowProperty(windowsName, prop_id, prop_value) 参数: ①...

拷贝构造函数的理解

1.拷贝构造函数与构造函数类似&#xff0c;当没有自定义拷贝构造函数的时候&#xff0c;编译器会定义一个拷贝构造函数。 当类对象没有初始化的时候&#xff0c;通过赋值运算符的形式&#xff0c;也是调用拷贝构造函数。 Test aa(100); Test bb aa;//调用拷贝构造函数Test …...

基于ncurse的floppy_bird小游戏

1. 需求分析 将运动分解为鸟的垂直运动和杆的左右运动。 2. 概要设计 2.1 鸟运动部分 2.2 杆的运动 3. 代码实现 #include <stdio.h> #include <ncurses.h>#include <stdlib.h> #include <time.h>int vx 0; int vy 1;int bird_r; int bird_c;int…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

用docker来安装部署freeswitch记录

今天刚才测试一个callcenter的项目&#xff0c;所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

Java 二维码

Java 二维码 **技术&#xff1a;**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

SpringAI实战:ChatModel智能对话全解

一、引言&#xff1a;Spring AI 与 Chat Model 的核心价值 &#x1f680; 在 Java 生态中集成大模型能力&#xff0c;Spring AI 提供了高效的解决方案 &#x1f916;。其中 Chat Model 作为核心交互组件&#xff0c;通过标准化接口简化了与大语言模型&#xff08;LLM&#xff0…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘 安装虚拟环境&#xff1a; 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境&#xff1a; virtualenv myenv 3、激活虚拟环境&#xff08;激活环境可以在当前环境下安装包&#xff09; source myenv/bin/activate 此时&#xff0c;终端…...

xmind转换为markdown

文章目录 解锁思维导图新姿势&#xff1a;将XMind转为结构化Markdown 一、认识Xmind结构二、核心转换流程详解1.解压XMind文件&#xff08;ZIP处理&#xff09;2.解析JSON数据结构3&#xff1a;递归转换树形结构4&#xff1a;Markdown层级生成逻辑 三、完整代码 解锁思维导图新…...

倒装芯片凸点成型工艺

UBM&#xff08;Under Bump Metallization&#xff09;与Bump&#xff08;焊球&#xff09;形成工艺流程。我们可以将整张流程图分为三大阶段来理解&#xff1a; &#x1f527; 一、UBM&#xff08;Under Bump Metallization&#xff09;工艺流程&#xff08;黄色区域&#xff…...

怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)

+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...