A 列代表不同零件的序列号,但这些零件来自不同的供应商,因此价格不同。B 列包含每个部分的价格。
我需要一个宏,它基本上会沿着 A 列向下,比较 B 列的重复价格,并返回 C 列中零件的最低价格。
或者,您可以:
不过,计算公式更有趣!
您甚至不需要数组公式就可以做到这一点:
=SUMPRODUCT(($B$1:$B$5)*($B$1:$B$5=MIN($B$1:$B$5+(A1<>$A$1:$A$5)*MAX($B1: $B5)))) /SUMPRODUCT(1*($B$1:B$5=MIN($B$1:$B$5+(A1<>$A$1:$A$5)*MAX($B1:$B5) )))
这里的重要见解是您可以在 SUMPRODUCT 中执行数组操作,也可以在 SUMPRODUCT 中执行函数内部操作。第一个 SUMPRODUCT 给出等于每个组件最低价格的所有价格的总和,第二个给出具有该价格的列表的数量。一个一个除以每个组件的最低价格!
第一个 SUMPRODUCT:
($B$1:$B$5)
是您的价格的列向量。$B$1:$B$5
等于,则其条目将被强制为 1 MIN($B$1:$B$5+(A1<>$A$1:$A$5)*MAX($B$1:$B$5))
,否则为零。第二个 SUMPRODUCT 与第一个相似,只是这次我们只是将满足条件的次数相加,而不乘以价格。