当大型数据工作表中的分组在 1-1000 行之间波动时,使用 Excel 公式将单个单元格值重新分配到其关联行上

当大型数据工作表中的分组在 1-1000 行之间波动时,使用 Excel 公式将单个单元格值重新分配到其关联行上

识别这个问题的最好方法是通过例子:下面是一些示例行。

我正在尝试根据 % 重新分配 1532.50 美元,适用于所有具有相同订单号 (016923) 的行,并结合简单的单行订单,将行 % x 金额相乘。我的工作表有 10 000 多行,因此无法为每个订单号手动进行这种交替计算。

第二个问题是每个订单号的行数波动,没有规律。订单号 016923 有 6 行,但有些有数百行。

订单号 % 金额

016923 45.58%........$1532.50
016923 2.3%............. 0
016923 6.5%............. 0
016923 15.06%........0
016923 7.35%........ 0
016923 22.87% .........0
016972 100.00%........0
017059 100.00% ......$14,791.70

答案1

首先,将光标放在数据表的任意位置,然后按 Ctrl+T 将其转换为结构化表。

接下来,使用以下公式添加一列:

=SUMIF([ORD'#],[@[ORD'#]],[AMOUNT])*[@[%]]

这会将金额与当前行的订单号相加,然后将该总和乘以当前行的百分比。

在此处输入图片描述

编辑:

如果订单号的百分比总和不等于 100%(例如样本数据中的 ORD# 16923 的情况),并且您想要保留分布在可见行中的全部金额,则可以使用以下命令:

=SUMIF([ORD'#],[@[ORD'#]],[AMOUNT])*[@[%]]/SUMIF([ORD'#],[@[ORD'#]],[%])

在此处输入图片描述

如果这两者都不是您的本意,而您实际上想说 1532.50 美元占订单总额的 45.6%,并且想要推断其他金额,那么您可以使用它来计算订单本身的推断金额:

=IF([@AMOUNT]>0,[@AMOUNT]/[@[%]],0)

这是计算物品金额的方法:

=SUMIF([ORD'#],[@[ORD'#]],[Extrapolated Order Total])*[@[%]]

像这样:

在此处输入图片描述

请注意,后一种解决方案仅当每个订单号只有一行且有现有金额时才会起作用。

相关内容