'Arrayformula', который ссылается на значения в ячейках выше, в столбце массива? - PullRequest
0 голосов
/ 13 февраля 2019

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

Формула в A1 берет все мои уникальные SKU продукта из сводной таблицы, транспонирует их через верхний ряд и добавляет три столбцамежду ними:

A1: =(SPLIT(JOIN("|"&rept("|",3),TABLE!A2:A),"|",1,0))

Формула в A2, E2 и т. д. запрашивает мои ответы в интерактивной форме (DATA!) для SKU элемента, возвращая метки времени, действия и количества.для каждого ответа формы, относящегося к этому SKU:

A2 =query(DATA!$A:$D,"select A,C,D where (B="&A1&") and C<>'SUBTRACT'",1)

Моя проблема возникает при попытке создать массив из формулы в D3.Этот столбец предназначен для предоставления текущей вкладки текущего количества заготовок, которые «зарезервированы» для предстоящих работ.Поскольку запас «ДОБАВЛЕН», запасное количество удовлетворяется и уменьшается до минимума 0:

D3 =if(B3="RESERVE",D2+C3,if(and(B3="ADD",C3>D2),D2-D2,D2-C3))

Эта формула дает мне желаемые результаты и работает, если ящелкните и перетащите его вниз, чтобы скопировать в ячейки ниже в том же столбце, но мне бы очень хотелось, чтобы он автоматически применял новые ответы формы, добавлял данные в дополнительные строки.

Моя неуклюжая попытка исправить, основанная наМой ограниченный опыт работы с ARRAYFORMULA возвращает только RESERVE значений как есть и сообщение об ошибке:

=arrayformula(if(F3:F="RESERVE",H2:H+G3:G,if(and(F3:F="ADD",G3:G>H2:H),H2:H-H2:H,H2:H-G3:G)))

Ошибка,Аргументы массива для GT имеют разные размеры.

Может кто-нибудь помочь мне разобраться?

1 Ответ

0 голосов
/ 13 февраля 2019
  • введите настройки электронной таблицы
  • перейдите к Расчет
  • Поворот Итерационный расчет до Вкл

  • , затем используйте эту формулу

    =ARRAYFORMULA(IF(LEN(B3:B),
     IF(B3:B="RESERVE",D2:D+C3:C,
     IF((B3:B="ADD")*(C3:C>D2:D), D2:D-D2:D, D2:D-C3:C)), ))

...