首先,首先库存(FIFO)公式非常缓慢地计算



我有一个表格,包括从库存到另一个库存以及从供应商到另一个供应商的产品交易,我将FIFO评估的公式从Excel表到Google Sheet,但是当我将该公式填充到所有字段时床单变得非常慢。在我的工作表的链接下方。

这是公式之一

=ARRAY_CONSTRAIN(ARRAYFORMULA(SUM(--IF(MMULT(--(ROW(F$17:F18)>=TRANSPOSE(ROW(F$17:F18))),--IF(E$17:E18=N19,F$17:F18,0))<SUMIF(N$18:N19,N19,O$18:O19),1,0))), 1, 1)

=ARRAY_CONSTRAIN(ARRAYFORMULA(SUMPRODUCT(--IF(OFFSET(E$17,,,V19+1)=N19,1,0),OFFSET(F$17,,,V19+1),OFFSET(H$17,,,V19+1))-SUMIF(N$18:N18,N19,Z$18:Z18)), 1, 1)

=ARRAY_CONSTRAIN(ARRAYFORMULA((SUMIF(N$18:N19,N19,O$18:O19)-SUMPRODUCT(--IF(OFFSET(E$17,,,V19+1)=N19,1,0),OFFSET(F$17,,,V19+1)))*OFFSET(H$17,V19,,,)), 1, 1)

最后

=IF(SUMIF(N$18:N19,N19,O$18:O19)>SUM(E$18:E19,N19,F$18:F19),MAX(SUMIF(E$18:E19,N19,G$18:G19)-SUMIF(N$18:N18,N19,P$18:P18),0),Y19)

https://docs.google.com/spreadsheets/d/1xjxcipsh-q5ltsago-kpepomrzdai1t8pdh57rc-sow/edit?usp=sharing

更新....

列中的公式= if(f19 = 0,0,g19/f19(取代= arrayformula(if(len(f19:f(,if(f19:f = 0,0,0,g19:g/f19:f(,(,((

列中的公式= Z19取代= arrayformula(如果(len(o19:o(,if(o19:o = 0,0,0,z19:z((,((

列中的公式= p19/o19取代= arrayformula(if(len(o19:o(,if(o19:o = 0,0,0,p19:p/o19:o(,((,((

但这些公式仍然需要

的帮助

= array_constrain(arrayformula(sum( - if(if(mmult( - ( - (f $ 17:f18(((> = transpose(row(f $ 17:f18(((, - if(e $ 17:e18 = n19,$ 17:f18,0((

= array_constrain(arrayformula(sumproducta( - if(offset(e $ 17 ,, ,, v19 1((= n19,1,0(,偏移(f $ 17,v19 1(,offset(offset(h $ 17,h $ 17(,, v19 1(( - sumif(n $ 18:n18,n19,z $ 18:z18((,1,1(

= array_constrain(arrayformula((sumif(n $ 18:n19,n19,o $ 18:o19((-sumproduct( - if(offset(e $ $ 17 ,, v19 1(= n19,1,0(,偏移(F $ 17,v19 1(((*偏移(h $ 17,v19 ,,(,1,1(

= if(sumif(n $ 18:n19,n19,o $ 18:o19(> sum(e $ 18:e19,n19,f $ 18:f19(,max(sumif(e $ 18:e19,n19,n19,g $ 18:18:18:18:g19(-sumif(n $ 18:n18,n19,p $ 18:p18(,0(,y19(

问候

从第19行到第5395列的H(以及其他列(上的fifo具有很长的"公式链"。填写/正确的相对引用,因此公式之间的A1表示法的差异仅是相对引用,但在R1C1表示法中,公式看起来以相同的方式。

为了提高电子表格的性能,应减少公式的数量。如果您不需要这么多行,请尝试删除不必要的行。如果这还不够,或者您正在寻找最佳性能,请在可能的情况下用数组公式替换公式链或使用Google Apps脚本

笔记

最佳使用您的Web浏览器/设备/网络资源

  • 避免使用打开的引用或将它们包装在array_constrain函数中仅返回所需的值。
  • 在Google Apps脚本上,避免或在执行时间内将呼叫发送给电子表格服务,特别是避免在循环中拨打电子表格服务,例如使用for for loop一次编辑一个单元格。

最新更新