嵌套的IF语句无法返回“ 0”,因为第二条IF语句妨碍了

时间:2018-12-04 21:30:24

标签: excel excel-formula

如果是周末,我只想计算加班时间为.5hr的加班时间,而不是周末则按固定时间计算。直到我将“ time in”和“ timeout”时隙留空之前,它都可以正常工作,然后它会在加班时间下自动将第一个IF语句中的.5计算为-.5,而不是将其保留为0.00。反正还有吗?

=IF(WEEKDAY($A19,2)>5,(d19-c19)*24-**.5**,IF((D19-c19)*24>8,(d19-c19)*24-8.5,0

p.s。第一次在这里发布,如果所有这些都搞砸了,抱歉。感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

很难遵循您的要求,但这是我基于对您正在说的话的一些猜测来尝试解决的问题:

假设:

  • A列是日期。
  • C列是时间到。
  • 列D为超时。
  • 周末总是加班。
  • 在任何一天的加班时间中扣除30分钟的休息时间。
  • 您正在尝试计算每天的加班总时间。

第1步:请确保您有几个小时甚至可以考虑。

= IF((D19-C19) > 0,<do something here>,0)

步骤2:在工作日与周末之间做一些不同的事情。

= IF((D19-C19) > 0, IF(WEEKDAY($A19,2)>5, <calculate weekend>, <calculate weekday>),  0)

第3步:计算周末,但绝对不能使用负数。 (假设:如果一个人加班15分钟,那根本就不是加班。)

= IF( (D19-C19) > 0, 
      IF(WEEKDAY($A19,2)>5,
         MAX((D19-C19)*24-0.5, 0), <calculate weekday>),  0)

第4步:计算工作日,但绝不能使用负数。 (假设:如果一个人加班15分钟,那根本就不是加班。)

= IF( (D19-C19) > 0, 
      IF(WEEKDAY($A19,2)>5,
         MAX((D19-C19)*24-0.5, 0),
         MAX((D19-C19)*24-8.5, 0)
        ),
      0)

步骤5:优化-由于当D19-C19为0时,看起来MAX函数可以处理这种情况,因此我们不需要外部IF语句

= IF(WEEKDAY($A19,2)>5,
     MAX((D19-C19)*24-0.5, 0),
     MAX((D19-C19)*24-8.5, 0)
    )

...我认为这可以满足您的需求。