【问题标题】:Excel. date and time = workshift XExcel。日期和时间 = 轮班 X
【发布时间】:2021-01-06 19:57:30
【问题描述】:

我有一个带有日期和时间格式的单元格:(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(周日)
  • 这些班次之外的任何事件都应作为班次返回:加班

    我已经@这个几个小时没有结果。有人愿意挑战吗? :)

【问题讨论】:

  • 显示您尝试过的内容,以及您对输入结果的期望。
  • 好吧,我的解决方案是在工作表中列出轮班时间并对其进行引用,如下所示: =SUM.HVISER(Data!$BD:$BD;Data!$BC:$ BC;">="&TEKST(B22;"dd-mm-åååå")&" "&TEKST(B21;"tt:mm");数据!$BC:$BC;"
  • 您是否看到您的公式很难读取它在 cmets 中的格式?请编辑您的问题以添加公式,以及您的输入和所需输出的示例。
  • 不要在 cmets 中添加详细信息。相反,edit 您的帖子将其包含在可以看到的地方。您在评论中转储的代码不可读;如果你把它放在问题本身可以格式化和容易看到的地方,它是可用的。

标签: excel datetime if-statement vlookup weekday


【解决方案1】:

我认为这样做的方法是设置一个表格,其中包含各种参数的列,以及工作日的计算列。

我将表命名为 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])),Shifts[Shift]),
      "Overtime")

【讨论】:

  • 感谢您帮助罗恩。真的很感激!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-05
相关资源
最近更新 更多