我有一个超过 50,000 行的数据表。数据包含商店、日期和产品排列的销售信息。但是,产品实际上是初级产品 (PP) 和次级产品 (SP) 的组合,其中 1 个 PP 的销售数量应转换为 1 个或更多 SP 的销售。我有另一张表,其中包含 PP 到 SP 的转换,其中包含相应的乘数(超过 500 行)。PPs和SPs是多对多的关系;PP 可以转换成几个不同的 SP,同一个 SP 也可以从其他 PP 转换。
目前,产品仅存在未转换的销售数量,如果存在乘数,我的工作是将这些数字转换为每个 PP 各自的 SP。
示例:https ://i.stack.imgur.com/YdGHn.png
我可以使用以下 SUMPRODUCT() 公式来做到这一点,它看起来比数组公式更有效:
=SUMPRODUCT(
(Conversions[Multiplier]),
--(Conversions[SP]=[@Product]),
SUMIFS([Quantity],[Product],Conversions[PP],[Store],[@Store],[Date],[@Date])
)
然而,考虑到我的数据集的大小,它仍然需要很长时间来处理。有没有更有效的方法来做到这一点?
编辑:
我尝试将公式包装在条件中,以便 SUMPRODUCT 仅评估是否可以在转换表中作为 SP 找到相关产品(并且它现在还显示没有任何转换的 PRODUCTS 的值)。这似乎加快了速度,但仍然远远不够快......
=IFERROR(IF(MATCH([@Product],Conversions[SP],0)>0,
SUMPRODUCT(
(Conversions[Multiplier]),
--(Conversions[SP]=[@Product]),
SUMIFS([Quantity],[Product],Conversions[PP],[Store],[@Store],[Date],[@Date])
),0),0)+[@Quantity]