Таблица нескольких формул Mashup - PullRequest
0 голосов
/ 21 сентября 2011

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

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

**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 проверьте наличие ЗАДАЧИ на соответствующем листе (LI или DE).
  • Если он есть, проверьте, есть ли у него *.
  • Если у него есть *, возьмите число НЕДЕЛИ в этой строке, сравните его с НЕДЕЛЕЙ с другого листа, возьмите большее число и загрузите его в столбец X ЗАДАЧИ в Форме.Порядок здесь не имеет большого значения.Мне просто нужна НЕДЕЛЯ от той, у которой *.

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

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

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

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

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

1 Ответ

2 голосов
/ 21 сентября 2011

Я думаю, что вы можете сделать это с формулой, но так как вам придется зацикливаться, вам понадобится SUMPRODUCT или Array Formula.

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

=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 найдет наибольшее значение между двумя ФОРМУЛАМИ АРРЕЙ из двух форхитов
  • Формула массива работает как тест с несколькими циклами:
    • (LI!$C$2:$C$5="*") проверяет, есть ли звезда в третьем столбце
    • (LI!$A$2:$A$5) вернет номер недели
    • (LI!$B$2:$B$5=Form!A2) проверит, совпадают ли задачи

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

[РЕДАКТИРОВАТЬ] Еще одна попытка благодаря вашему комментарию (обе задачи должны быть выполнены, чтобы появиться)

=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)),"")
...