大数跨境
0
0

解决问题的逻辑思路才是上乘妙法(结合两个例子)

解决问题的逻辑思路才是上乘妙法(结合两个例子) Excel数据分析之道
2024-06-17
1

示例1

先看一个例子,如下图,要求统计每天每个机台的操作工人数,也就是从C列的单元格中,统计有几个人。

每个操作工姓名之间是使用统一的中文逗号分隔的。

如果有2个人,则是1个逗号分隔;如果是3个人,则是2个逗号分隔;如果是4个人,则是3个逗号分隔。

这样的观察和思考,你发现什么逻辑没?如果能数出来有几个逗号,逗号的个数加上1,就是人数了。

那么,如何计算出逗号的个数呢?这才是解决这个问题的关键所在。

可以这样考虑:先计算出C列单元格的原始字符长度,以C3单元格为例,使用LEN函数计算原始字符长度是13

=LEN(C3)

再使用SUBSTITUTE函数将逗号替换掉,使用LEN函数计算替换掉逗号后的字符长度是10

=LEN(SUBSTITUTE(C3,",",""))

这两个数字 13 和 10 之间的逻辑关系是什么?13 和 10 的差值 是 3,这个数字 3 就是被替换掉的逗号的个数啊!

这样,就知道了逗号的个数,也就可以计算出人数了:

=LEN(C3)-LEN(SUBSTITUTE(C3,",",""))+1

有人问了,如果姓名之间的分隔符号不一样怎么办?有的是中文逗号,有的是英文逗号,有的是顿号,有的是斜杠。

话说,数据规范才是数据管理和数据分析的最最最最最基本要求吧???如果连表格数据的规范都做不到,那就不要使用Excel了,直接在Word里做表好了。

分隔符号不统一,就必须先统一!

示例2

再看一个例子,如下图,要求统计每个人每个班次的工作时长。

如果上班时间和下班时间是正确的、合法的日期时间,那么将两个日期之间相减,就是工作时长了。

这个表格的特殊情况是,上班时间和下班时间是12小时制的数据,并且日期和时间之间有上午和下午名称。

但这个表格的上班时间和下班时间也是有规律可循的。

(1)上班时间

无论是什么班次,上班时间都是该日的时间,但需要根据班次来处理上班时间:如果是早班和日班,则是上午时间,将上班时间中的“上班”删除就可以了,但是如果是夜班,则在删除“下午”字样后需要加12小时(0.5天),转换为24小时制。

当然,也可以判断上班时间中是否含有“上午”或“下午”字样,如果含有“上午”字样,就直接删除“上午”,得到上班时间;如果含有“下午”字样,就先删除“下午”,再将日期时间加0.5。

(2)下班时间

如果F列的班次是“早班”和“日班”,则下班时间都是当日的下午时间,因此将“下午”两字删除后,加0.5,得到早班和日班的下班时间。

如果F列的班次是“夜班”,则下班时间都是第2天的上午时间,因此直接将“上午”两字删除,就得到夜班的下班时间。

通过以上分析,是不是找到了解决问题的逻辑思路?

我们可以使用一个通用公式进行综合计算,直接得到工作时长,公式如下:

=IF(F2<>"夜班",SUBSTITUTE(E2,"下午","")+0.5,SUBSTITUTE(E2,"上午",""))

 -IF(F2<>"夜班",SUBSTITUTE(D2,"上午",""),SUBSTITUTE(D2,"下午","")+0.5)

整理后的标准上班时间是:

IF(F2<>"夜班",SUBSTITUTE(D2,"上午",""),SUBSTITUTE(D2,"下午","")+0.5)

整理后的标准下班时间是:

IF(F2<>"夜班",SUBSTITUTE(E2,"下午","")+0.5,SUBSTITUTE(E2,"上午",""))

这里的两个案例,函数很简单,核心函数是SUBSTITUTE,将指定字符替换为新字符,其他的函数也很简单,IF是必会的函数之一,LEN函数也没什么弯弯绕。

不过,在处理考勤数据时,需要了解日期和时间的规则,例如,你知道为什么要加数字 0.5,而不是加时间 12:00:00  ?

---------------------------------------------

解决问题的逻辑思路才是上乘妙法,只关注小技巧,不免落入了下乘!

【声明】内容源于网络
0
0
Excel数据分析之道
全面介绍Excel在企业数据分析中的各种应用,实际案例模板分享,经验心得,帮助个人和企业提升Excel应用能力。
内容 1106
粉丝 0
Excel数据分析之道 全面介绍Excel在企业数据分析中的各种应用,实际案例模板分享,经验心得,帮助个人和企业提升Excel应用能力。
总阅读346
粉丝0
内容1.1k