【问题标题】:First in first out inventory (FIFO) formula very slow calculation先进先出库存(FIFO)公式计算很慢
【发布时间】:2019-08-05 21:02:38
【问题描述】:

我有一张表,其中包括从库存到另一个以及从供应商到另一个的产品交易,我将用于 FIFO 评估的公式从 excel 表导入到 google 表,但是当我将该公式填充到所有字段表时会变得非常慢。 在我的工作表的链接下方。

这是公式之一

=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

更新....

H 列中的公式 =IF(F19=0,0,G19/F19) 替换为 =数组公式(IF(LEN(F19:F), IF(F19:F=0, 0, G19:G/F19:F), ))

P 列中的公式 =Z19 替换为 =数组公式(IF(LEN(O19:O), IF(O19:O=0, 0, Z19:Z), ))

O 列中的公式 =P19/O19 替换为 =数组公式(IF(LEN(O19:O), IF(O19:O=0, 0, P19:P/O19:O), ))

但这些公式仍然需要帮助

=ARRAY_CONSTRAIN(ARRAYFORMULA(SUM(--IF(MMULT(--(ROW(F$17:F18)>=TRANSPOSE(ROW(F$17:F18)))),--IF(E$17:E18=N19 ,F$17:F18,0))

=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)

问候

【问题讨论】:

  • 工作表中的公式太多 - i.stack.imgur.com/jlh64.png - 因此速度变慢
  • 您应该使用数组公式而不是每行 1 个 fx。例如:删除 FIDO!H19:H 范围内的所有内容并将其粘贴到 H19:=ARRAYFORMULA(IF(LEN(F19:F), IF(F19:F=0, 0, G19:G/F19:F), ))
  • 感谢您的回复,我需要替换 V、W、X 和 Z 列中的公式。您能帮忙吗?

标签: performance google-sheets google-sheets-formula


【解决方案1】:

工作表 FIFO 在从第 19 行到第 5395 行的 H 列(可能还有其他列)上有一个很长的“公式链”。通过公式链,我指的是一个公式,包括向下/向右填充的相对引用所以一个公式和下一个公式在 A1 表示法上的区别只是相对引用,但在 R1C1 表示法中,公式看起来是一样的。

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

注意事项

为了充分利用您的网络浏览器/设备/网络 资源

  • 避免使用打开的引用或将它们包含在 ARRAY_CONSTRAIN 函数中以仅返回所需的值。
  • 在 Google Apps 脚本上,至少避免或保持在执行时对电子表格服务的调用,特别是避免在循环中调用电子表格服务,例如使用 for 循环一次编辑一个单元格。

【讨论】:

  • 感谢您的回复。我需要使用数组公式而不是每行 1 个 fx,就像 @player0 所说的那样。对新公式有什么帮助吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-07
  • 2018-10-11
  • 2012-06-21
  • 2013-01-16
  • 1970-01-01
相关资源
最近更新 更多