问题描述
我有一个日期和时间的单元格,格式为:(dd-mm-yyyy tt:mm)
基于此,我想提取使数据保存在我的excel文件中的移位。
轮班时间如下
- 日间班:06:01-14:00(周一至周四)06:00-13:20(周五)
- 夜间班次:周一至周四14:01-22:50
- 夜班:22:36-06:00(星期日晚上-星期一早上)22:51-06:00(星期一至星期五)
- 周末班:13:21-01:20(星期五)10:40-22:35(星期日)
- 那些轮班以外的任何事件都应作为轮班返回:加班
我来这已经好几个小时了,没有结果。有人要挑战吗? :)
解决方法
我认为这样做的方法是建立一个表,其中包含用于各种参数的列,以及用于工作日的计算列。
我将表命名为Shifts
,并且正在使用结构化引用来简化维护和将来的理解,但是如果需要,您可以使用常规引用。
排班表
E2中的公式:
=MATCH([@Day],{"Sunday";"Monday";"Tuesday";"Wednesday";"Thursday";"Friday";"Saturday"},0)
给出时间戳的公式将返回Shift:
=IFERROR(
LOOKUP(2,1/(
(MOD(timeStamp,1)>=Shifts[startTime])*
(MOD(timeStamp,1)<=Shifts[endTime])*
(WEEKDAY(timeStamp)=Shifts[wdNum])),Shifts[Shift]),"Overtime")
随机结果
在具有结构化引用的表格中使用公式
=IFERROR(
LOOKUP(2,1/(
(MOD([@timeStamp],1)>=Shifts[startTime])*
(MOD([@timeStamp],1)<=Shifts[endTime])*
(WEEKDAY([@timeStamp])=Shifts[wdNum])),"Overtime")