Вложенные операторы IF не могут возвращать «0», потому что 2-й оператор IF мешает - PullRequest
0 голосов
/ 05 декабря 2018

Если это выходные, я хочу рассчитывать сверхурочные часы только с 5-часовым перерывом и обычными часами, когда не выходные.Он прекрасно работает, пока я не оставлю пустыми свои слоты «время входа» и «время ожидания», а затем автоматически вычисляет .5 в первом операторе IF как -.5 при сверхурочных часах вместо того, чтобы оставить значение 0,00.Есть ли что-нибудь вокруг этого?

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

ps при первой публикации здесь, извините, если все это испорчено.Спасибо за любую помощь.

1 Ответ

0 голосов
/ 05 декабря 2018

Трудно следовать тому, что вы просите, но вот моя попытка решить ее, основываясь на некоторых предположениях о том, что вы говорите:

Допущения:

  • Столбец 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: Оптимизация - поскольку похоже, что функция MAX обрабатывает случай, когдаD19-C19 равен 0, нам не нужно внешнее выражение IF

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

... и я думаю, что это дает вам то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...