0

我有一个超过 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]
4

1 回答 1

0

如果您有可能将数据导入数据库。然后,您可以使用索引表。应该更快。

于 2019-02-19T07:13:02.870 回答