Формула Google Sheets для расчета фактической общей продолжительности задач с разными датами начала / окончания, перекрытиями и пробелами - PullRequest
2 голосов
/ 27 сентября 2019

Я знаю, как это сделать с помощью пользовательской функции / скрипта, но мне интересно, можно ли это сделать с помощью встроенной формулы.

У меня есть список задач с датой начала и концасвидание.Я хочу вычислить фактическое количество рабочих дней (NETWORKDAYS), потраченных на все задачи.

  • Рабочие дни могут перекрываться, поэтому я не могу просто подсчитать количество дней, потраченных на каждую задачу
  • Могут быть пробелы между задачами, поэтому я не могу просто найти разницу между первым началом и последним концом.

Например, давайте использовать эти:

| Task Name | Start Date | End Date   | NETWORKDAYS |
|:---------:|------------|------------|:-----------:|
|     A     | 2019-09-02 | 2019-09-04 |      3      |
|     B     | 2019-09-03 | 2019-09-09 |      5      |
|     C     | 2019-09-12 | 2019-09-13 |      2      |
|     D     | 2019-09-16 | 2019-09-17 |      2      |
|     E     | 2019-09-19 | 2019-09-23 |      3      |

Вот это визуально:

enter image description here

Сейчас:

  • Если вы наберете NETWORKDAYS, вы получитеполучите 15
  • Если вы вычислите NETWORKDAYS между 2019-09-02 и 2019-09-23, вы получите 16

Но фактическая продолжительность равна 13:

  • A и B немного перекрываются
  • Существует разрыв между B и C
  • Существует разрыв между D и E

Если бы я былчтобы написать собственную функцию, я бы взял все даты, отсортировал их, нашел перекрытия и удали их, а также учел пробелы.

Но мне интересно, есть ли способ рассчитать фактическую продолжительность, используя встроенные формулы?

1 Ответ

1 голос
/ 27 сентября 2019

конечно, почему бы и нет:

=ARRAYFORMULA(COUNTA(IFERROR(QUERY(UNIQUE(TRANSPOSE(SPLIT(CONCATENATE("×"&
 SPLIT(REPT(INDIRECT("B1:B"&COUNTA(B1:B))&"×", 
 NETWORKDAYS(INDIRECT("B1:B"&COUNTA(B1:B)), INDIRECT("C1:C"&COUNTA(B1:B)))), "×")+
 TRANSPOSE(ROW(INDIRECT("A1:A"&MAX(NETWORKDAYS(B1:B, C1:C))))-1)), "×"))), 
 "where Col1>4000", 0))))

enter image description here

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