计算相对于2个边界的权重

时间:2019-09-18 19:51:28

标签: excel excel-formula

我试图解决一个琐碎的数学问题,但没有成功。最终产品应该是一个漂亮干净的Excel公式。

我们在这里考虑每月在办公室喝杯咖啡。桌子上的每个停靠点都与前面相距200杯。 (即标题每个月读200、400、600等杯)。对于这些停靠点,我都计算了与我们考虑的消费水平相关的包装成本。

问题是当我们考虑中间消耗值时,例如720杯/月。这介于表的2列之间。 720比800更接近800。因此,我要寻找的公式将类似于:

  

w *(与600杯/月相关的包装成本)+ w'*(与800杯/月相关的包装成本)

     

其中:w(在我们的示例中为w = 200-120 / 200),而w’= 1-w

如果没有一系列“如果”,就无法优雅地做到这一点……您会怎么做?

4 个答案:

答案 0 :(得分:0)

要将A1 向下舍入到最接近的乘积200,可以使用以下方法:

=ROUNDDOWN(A1 / 200, 0) * 200

类似地,您可以使用ROUNDUP
然后,为了计算您的w,您可以使用以下公式:

= 200 - (A1 - ROUNDDOWN(A1 / 200, 0) * 200) / 200

然后您VLOOKUP便无法通过价格表中的位置查找相关价格。

答案 1 :(得分:0)

如何?

enter image description here

单元格D4中的公式

=VLOOKUP(D2,A2:B7,2,1)+((VLOOKUP(D2+200,A2:B7,2,1)-VLOOKUP(D2,A2:B7,2,1))/200)*(D2-VLOOKUP(D2,A2:B7,1,1))

因此,一个插值公式将价格取为最接近的最低值,并增加了额外的必要金额...

答案 2 :(得分:0)

编辑#2

假定您遵循以下命名范围

Named Ranges

  • 消费是按升序排序的消费阈值列表;
  • 成本是每个消费阈值的价格列表;
  • 已消费为实际消费量。
  • 界限是示例中的200增量单位。

基于以下假设

  1. 如果消耗的数量接近下限,我们将仅使用下限的价格;
  2. 如果消耗的数量接近上限,我们将使用以下公式计算加权平均价格:
  

Weighted Average Price (WAP) = w * p + w' * p'

根据我的示例中上面提供的价格表,

  

如果消耗量为720

     

w =(200-120)/ 200 = 0.4

     

w' = 1-w = 0.6

     

p = 80是数量600

的成本      

p' = 100是数量800

的成本      

WAP = 0.4 * 80 + 0.6 * 100 = 92

鉴于价格方程的结构,可以使用 SUMPRODUCT 函数将其重写如下:

WAP = SUMPRODUCT({w,w'},{p,p'})

要从上述公式中找到数量权重{w,w'}的范围,可以使用以下数组公式,需要通过按 Ctrl +进行确认 Shift + 输入

{=ABS({0,1}-(Bound-MOD(Consumed,Bound))/Bound)}
  

此处 MOD 函数用于找出600以上的120上的剩余数量。从{0,1}减去后将返回{-0.4,0.6},然后使用 ABS 函数将所有值都变为正数。

要找到价格范围{p,p'},可以使用另一个数组公式,也需要使用 Ctrl + Shift + 输入

{=INDEX(Costs,N(IF(1,MATCH(MROUND(Consumed,Bound),Consumption,0)-IF(MOD(Consumed,Bound)<100,{0,0},{1,0}))))}
  

在这里,我使用了@JvdV建议的 MROUND 函数来找到最接近的界限,然后使用 INDEX + MATCH 返回相应的价格。 IF 函数将返回{0,0}{1,0},这将确定查找价格是来自两个边界还是来自同一边界,这取决于所消耗的数量接近上限或下限。

最后,在 SUMPRODUCT 函数中将以上两个数组公式组合在一起,如下所示:

{=SUMPRODUCT(ABS({0,1}-(Bound-MOD(Consumed,Bound))/Bound)*INDEX(Costs,N(IF(1,MATCH(MROUND(Consumed,Bound),Consumption,0)-IF(MOD(Consumed,Bound)<100,{0,0},{1,0})))))}
  

这也是一个数组公式,需要在以下位置按 Ctrl + Shift + Enter 进行确认公式栏。

Solution1

如果我根据第一个假设将消费数量更改为650,则价格应为80,如下所示:

Solution2

答案 3 :(得分:0)

对不起,您的回复很晚。已经有一段时间了。我需要仔细阅读/测试您的建议,但在此之前,感谢您在此问题上的帮助。你真的很摇滚;)

朱利安