Ошибка круговой зависимости Google Sheets для листа управления задачами с зависимостями задач - PullRequest
0 голосов
/ 25 сентября 2019

Я сделал образец листа, чтобы показать мою проблему: https://docs.google.com/spreadsheets/d/1YZvdHBT3G9gLM8qhas_LSPWU4prVGoOTbY6pRo1IUA0/edit?usp=sharing.

Я пытаюсь создать диспетчер задач.Задачи имеют:

  • Зависимости от других задач
  • Завершенный статус - предоставляется пользователем

Задача может быть выполнена только тогда, когда все ее задачи выполнены.задачи зависимости были завершены.

Вот что у меня есть и что я пытаюсь сделать:

Tasks лист:

  • Task Name
  • User Input - Is Completed - здесь пользователь будет указывать, завершена ли задача
  • Formula - Are Pre-Requisites Met - формула для определения, были ли выполнены зависимости этой задачи;больше ниже
  • Formula - Is Really Completed - формула;задача действительно может быть выполнена только тогда, когда выполнены все ее предварительные условия

Dependencies лист:

  • Task Name - родительская задача
  • Pre-Requisite - Task Name - дочернее / зависимое задание
  • Pre-Requisite - Formula - Is Really Completed - значение Formula - Is Really Completed из листа Tasks для этой строки Pre-Requisite - Task Name (дочернее / зависимое задание)

Моя мысль такова:

  • На листе Dependencies для каждой обязательной задачи найдите ее на листе Tasks и посмотрите, действительно ли она выполнена (Is Really Completed)
  • Затем на листе Tasks для каждого Task Name проверьте состояние каждого из его предварительных заданий на листе Dependencies и убедитесь, что все действительно выполнено.

Проблема в том, что это приводит к ошибке циклического задания.Но я не думаю, что это должно.Задача B зависит от задачи A, поэтому, чтобы определить, действительно ли задача A выполнена, мы только проверяем, выполнена ли задача B.Так что круговой ссылки нет.

Не уверен, как решить эту проблему ...

Ответы [ 2 ]

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

Это можно исправить, выполнив: File -> Speadsheet Settings

dep-01

Один разизменить расчет с OFF на ON

dep-02

0 голосов
/ 25 сентября 2019

Ячейка C2 будет:

=ARRAYFORMULA(IF(A2:A<>"", IFERROR(VLOOKUP(A2:A, {IFERROR(
 VLOOKUP(A2:A, dependencies!A2:B, 2, 0)), B2:B}, 2, 0), 
 VLOOKUP(A2:A, A2:B, 2, 0)), ))

0


, а ячейка D2 будет:

=ARRAYFORMULA(IF(A2:A<>"", IF((IFERROR(VLOOKUP(A2:A, {IFERROR(
 VLOOKUP(A2:A, dependencies!A2:B, 2, 0)), B2:B}, 2, 0), 
 VLOOKUP(A2:A, A2:B, 2, 0)))*(B2:B=TRUE), TRUE), ))

0

...