【问题标题】:Using Formula to determine Shift from Time data使用公式确定时间数据的偏移
【发布时间】:2016-08-01 18:58:47
【问题描述】:

我有一列时间数据格式如下:hh:mm:ss

我想创建一个 IF 语句,如果时间落在特定值之间,则返回 1、2 或 3 对应于第一个、第二个或第三个班次。

=IF(AND(E50>8,0,0,E50<16,0,0),"First",(IF(AND(E50>=16,0,0,E50<24,0,0), "Second", "Third")))

这就是现在的样子,但它不起作用。

【问题讨论】:

    标签: excel datetime excel-formula


    【解决方案1】:

    CHOOSE functionHOUR 一起使用。您应该考虑所有可能的结果。

    =choose(hour(e50)/8+1, "third", "first", "second")
    

    【讨论】:

      【解决方案2】:

      作为一个简短的公式:

      =CHOOSE(INT(1+MOD(E50,1)*3),"Third","First","Second")
      

      会做你想做的。

      如果时间只是时间(没有日期)那么

      =CHOOSE(INT(1+E50*3),"Third","First","Second")
      

      也可以。

      而且这个公式应该很快;)

      编辑

      要使其完全“可变”,您需要这样的东西(时间表按 I51:J53 升序排列):

      =INDEX($J$51:$J$53,COUNTIF($I$51:$I$53,"<="&MOD(E50,1))+IF(COUNTIF($I$51:$I$53,">"&MOD(E50,1))=3,3))
      

      看起来像这样:

      注意:如果您拆分从 0:00 之前到 0:00 之后的班次,表格将如下所示:

      12:00 AM | Third
      06:01 AM | First
      12:22 PM | Second
      10:54 PM | Third
      

      那么你可以跳过公式到:

      =INDEX($J$51:$J$54,COUNTIF($I$51:$I$54,"<="&MOD(E50,1)))
      

      因为+IF(COUNTIF($I$51:$I$53,"&gt;"&amp;MOD(E50,1))=3,3) 仅适用于没有找到任何东西的情况(这将是最后一个班次)...

      【讨论】:

      • 该死!我花时间添加了一张图片!
      • 那行得通,但你能解释一下它是怎么做到的吗,我有点惊讶。
      • @Jeeped 还有一个链接...和一个描述;P ...不过,理论上我们都错了...第一个班次落在 8 到 16 之间。 .. 这不包括 8 和 16 本身...就问题本身而言,=IF(MOD(E50,1)&gt;=2/3,"Second",IF(MOD(E50,1)&gt;1/3,"First","Third")) 之类的东西是正确的...
      • @J.A. time 只是一个从 0 到 1 的数字(1 本身又是 0:00)。通过使用MOD(E50,1),我清除了日期以获取时间。 *3 使得 0:00-8:00 为 0 到 1,8:00-16:00 为 1 到 2,16:00-24:00 为 2 到 3。INT(...)使得第一个选项的数字仅为 0,第二个选项为 1,第三个选项为 2。 Choose(...) 根据第一个值选择零件(因此+1)...通过使用“评估公式”功能,您可以看到它做得很好;)
      • 如果我的班次遵循 24 年 8 月 16 日的标准划分,这将正确评估它;如何修改它以适用于轮班部门,例如:(7:10-15:10)、(15:10-23:10)、(23:10-7:10) 轮班 (1,2,3)分别。
      【解决方案3】:

      如果你把你的三班开始时间放在单元格中并引用它们,就这么简单:

      =IF(AND(D13>=$D$11, D13<$E$11),"First",IF(AND(D13>=$E$11,D13<$F$11),"Second", "Third"))
      

      【讨论】:

      • 这也行得通,如果我的班次开始时间不完全是 8 点,而更像是上午 7:10:00至下午 3:10:00或 7:10:00 至 15:10:00
      • @J.A.只需更改我从您的公式中借来的公式中的 8/16/24。
      • 应该HOUR(E50)&gt;8HOUR(E50)&gt;=8 吗? HOUR(E50)&lt;24 有必要吗?
      • 当我把我的时间放在你有 8、16、24 的位置时出现错误,并且 Excel 更改了我输入时间的顺序。所以我用逗号而不是分号来分隔,像这样: >=IF(AND(HOUR(E50)>7,10, HOUR(E50)=15,10,HOUR(E50)
      • @Chrismas007 如果时间是只是没有日期的时间,那么您的公式将起作用。
      【解决方案4】:

      我发现这是将时间转换为 3 个班次的最简单方法。加 1 允许 excel 返回午夜到 00:59 作为 0。(所以在下面的公式中,选择函数的前六个结果是 "C" 指的是夜班,然后在早上 6 点班次更改为 "A" 天shift。等等。"R3" 是我有时间在的单元格。

      =CHOOSE(HOUR(R3)+1, "C", "C", "C", "C","C","C", "A", "A", "A", "A", "A", "A", "A","A","B","B","B","B","B","B","B","B","C","C")
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-15
        • 2015-06-20
        • 2011-08-04
        • 1970-01-01
        • 2015-11-25
        • 1970-01-01
        • 1970-01-01
        • 2023-02-04
        相关资源
        最近更新 更多