【发布时间】:2021-03-07 06:17:42
【问题描述】:
我正在尝试排列公式,以便自动计算来自未来表单响应的特定值。不幸的是,该公式使用同一列中上述单元格中的值来返回运行总计,我无法弄清楚如何将其转换为数组而不会遇到循环依赖错误,或者让公式分解并停止正常工作。
A1 中的公式从数据透视表中获取我所有独特的产品 SKU, 将它们转置到顶行,并在它们之间添加三列:
A1:=(SPLIT(JOIN("|"&rept("|",3),TABLE!A2:A),"|",1,0))
A2、E2 等中的公式查询我的 Live Form 响应 (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 的数组参数大小不同。
有人可以帮我弄清楚吗?
【问题讨论】:
-
@player0 是的,这就是我要排列的公式。
-
@player0 如果此链接适合您,请告诉我:docs.google.com/spreadsheets/d/…
-
不,文件是私有的
-
arrayformula不理解AND()或OR()这就是为什么它需要转换成0/1 逻辑
标签: if-statement google-sheets circular-dependency google-sheets-formula array-formulas