Мэшап с несколькими формулами в электронной таблице

Я пытаюсь автоматизировать некоторые процессы для управления задачами, но у меня ничего не получается. Я не могу использовать макросы или что-то подобное, только формулы, и я не специалист по взлому электронных таблиц.

В любом случае, вот моя книга с ее **листами**:

**Form**
TASK     LI    DE    X
Test     1     3
Test2    2

**LI**
WEEK     TASK  COMPLETED
1        Test
2        Test
2        Test  *
4        Test2 *

**DE**
WEEK     TASK  COMPLETED
1        Test  *

Я пытался сделать следующее:

  • В форме проверьте, какой столбец из LI или DE > 0.
  • Для каждого > 0 проверьте наличие TASK на соответствующем листе (LI или DE).
  • Если он есть, проверьте, есть ли у него расширение *.
  • Если у него есть *, возьмите номер НЕДЕЛИ этой строки, сравните его с номером НЕДЕЛИ из другого листа, возьмите большее число и загрузите его в столбец X ЗАДАЧИ в форме. Порядок здесь не имеет особого значения. Мне просто нужна НЕДЕЛЯ из той, что с *.

В этом примере, чтобы X изменился, ЗАДАЧА должна быть отмечена * на тех листах, где она есть. Например, если в форме Test имеет номера в LI и DE, а Test имеет * в листе LI, но не в листе DE, X должен оставаться пустым. Но если оба имеют его с *, X должен быть загружен с большей WEEK между LI и DE.

Если бы я делал это с помощью макросов, я бы просто проверял каждый столбец с помощью цикла, но с формулами, я полагаю, было бы достаточно вложенных ЕСЛИ.

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

Любые сомнения, просто дайте мне знать! Надеюсь, я ясно изложил свою проблему.

Заранее большое спасибо!


person Andrés Botero    schedule 21.09.2011    source источник


Ответы (1)


Я думаю, вы можете сделать это с помощью формулы, но поскольку вам придется зацикливаться, вам понадобится СУММПРОИЗВ или формула массива.

Вот формула, которую вы можете попробовать (подтвердить с помощью CtrlShiftEnter):

=MAX((LI!$C$2:$C$5="*")*(LI!$A$2:$A$5)*(LI!$B$2:$B$5=Form!A2),(DE!$C$2:$C$5="*")*(DE!$A$2:$A$5)*(DE!$B$2:$B$5=Form!A2))

Некоторое объяснение:

  • Формула MAX найдет наибольшее значение между двумя ФОРМУЛАМИ МАССИВА двух рабочих листов.
  • The array formula works like a multiple loop test:
    • (LI!$C$2:$C$5="*") checks if there is a star in the third column
    • (LI!$A$2:$A$5) вернет номер недели
    • (LI!$B$2:$B$5=Form!A2) проверит, совпадают ли задачи

Надеюсь, я хорошо понял, что вы хотели сделать :)

[EDIT] Еще одна попытка благодаря вашему комментарию (обе задачи должны быть выполнены, чтобы появиться)

=IF(AND((LI!$C$2:$C$5="*")*(LI!$A$2:$A$5)*(LI!$B$2:$B$5=Form!A2),(DE!$C$2:$C$5="*")*(DE!$A$2:$A$5)*(DE!$B$2:$B$5=Form!A2))),MAX((LI!$C$2:$C$5="*")*(LI!$A$2:$A$5)*(LI!$B$2:$B$5=Form!A2),(DE!$C$2:$C$5="*")*(DE!$A$2:$A$5)*(DE!$B$2:$B$5=Form!A2)),"")
person JMax    schedule 21.09.2011
comment
Как...! Я бы никогда не нашел ответ, просто читая описания «формул». Большое тебе спасибо! Просто из любопытства, есть ли способ сломать MAX (чтобы ячейка оставалась пустой), если одно из чисел ложно? Я имею в виду, как я уже сказал, если задача назначена двум листам, ОБА должны иметь ЗАДАЧУ с *, иначе столбец X должен оставаться пустым. Еще раз спасибо! - person Andrés Botero; 21.09.2011
comment
Я читаю больше о формуле массива. Слишком хорошо, чтобы быть правдой, слишком неясно, чтобы быть известным. Спасибо за этот совет! - person Andrés Botero; 21.09.2011
comment
Я добавил еще одну попытку, но я не смог проверить ее прямо здесь (может быть, завтра). Скажи мне, если это работает лучше. - person JMax; 21.09.2011
comment
Для И мне пришлось использовать MAX для каждого логического члена по отдельности, иначе он оценивал бы только значение WEEK первой TASK, соответствующей Form!A2. Я собираюсь продолжить тестирование. Логика должна быть в порядке (возвращать только ту, что отмечена *), но по какой-то причине этого не происходит. В любом случае, на данный момент с участниками MAX в AND, похоже, все в порядке. Еще надо будет протестировать производительность... Большое спасибо! - person Andrés Botero; 22.09.2011
comment
Было сложно заставить все работать только с формулами, но ваша помощь была именно тем, что я искал. По крайней мере, самый труднодоступный ответ, который мне был нужен. Спасибо! - person Andrés Botero; 03.10.2011