从供应水平表中计算供应的最佳方法?

我有一个规定水平的表。

Sales Provision 0 5% 20 000 22% 100 000 30% 

一个推销员在头两万提供了5%的拨款,其次是8万提供了22%,其余的提高了30%。

例如售价为23万的推销员将提供拨款

 =20 000 * 0,05 + 80 000 * 0,22 + 130 000 * 0,30 

我怎样才能有效地用一个公式来expression呢? 公式

  • 需要很容易复制到几行(每行描述一个推销员)
  • 即使增加更多的准备金水平也需要工作

那么我可以说这个工程(希望)的要求#2:

即使增加更多的准备金水平也需要工作

但请注意,我不确定要求#1:

需要很容易复制到几行(每行描述一个推销员)

无论如何,有了这个数据:

  ABCDE ------------------------------------------ 0 0.05 Value 230000 20000 0.22 Total Provision 57600 100000 0.3 

我在E2中使用这个公式:

 =IFERROR(SUMPRODUCT((INDIRECT("A2:A"&MATCH(E1,A:A,1))-INDIRECT("A1:A"&MATCH(E1,A:A,1)-1))*INDIRECT("B1:B"&MATCH(E1,A:A,1)-1))+(E1-INDEX(A:A,MATCH(E1,A:A,1)))*INDEX(B:B,MATCH(E1,A:A,1)),E1*B1) 

如果我们打破这个公式:

第一个基本步骤是find销售价值所在的指标。 这是与销售价值相比第一低的价值。 在您的示例数据中,这是直接的,因为索引是供应清单中的最后一个。 但是,为了适应列表范围内的销售价值,我们可以使用:

 MATCH(E1,A:A,1) 

其中E1是销售价值,A:A是销售供应清单。

使用这个我们可以包含一个INDIRECT来获得我们需要处理的期望范围。 在这种情况下, A1 to A & Index

 INDIRECT("A1:A"&MATCH(E1,A:A,1)) 

但即使在这个范围内,我们也需要弄清楚两个不同的值:

  • 拨备价值指数低于我们的销售价值(即20 000 * 0.05 + 80 000 * 0.22
  • 其余的拨备销售价值(即130 000 * 0.30

所以要得到第一个值,我们需要像这样设置一个数组:

 (20000 - 0) * 0.05 = 20000*.05 = 1000 (100000 - 20000) * 0.22 = 80000*.22 = 17600 SUM = 18600 

这可以通过使用

 (A2:A3 - A1:A2)*(B1:B2) 

但要把它放在我们的INDIRECT公式中,看起来就像

 INDIRECT("A2:A"&MATCH(E1,A:A,1)) <- A2:A3 INDIRECT("A1:A"&MATCH(E1,A:A,1)-1) <- A1:A2 INDIRECT("B1:B"&MATCH(E1,A:A,1)-1) <- B1:B2 (INDIRECT("A2:A"&MATCH(E1,A:A,1))-INDIRECT("A1:A"&MATCH(E1,A:A,1)-1))*INDIRECT("B1:B"&MATCH(E1,A:A,1)-1)) 

只要用SUMPRODUCTSUMPRODUCT即可得到总数:

 SUMPRODUCT((INDIRECT("A2:A"&MATCH(E1,A:A,1))-INDIRECT("A1:A"&MATCH(E1,A:A,1)-1))*INDIRECT("B1:B"&MATCH(E1,A:A,1)-1)) 

那么第二个数值就是总销售价值减去我们的指数值并乘以相应的准备金率。 所以这将是:

 (E1-A3)*B3 

我们实际上在这里不需要INDIRECT ,几个INDEX - MATCH查找将会执行:

 E1 <- E1 INDEX(A:A,MATCH(E1,A:A,1)) <- A3 INDEX(B:B,MATCH(E1,A:A,1)) <- B3 (E1-INDEX(A:A,MATCH(E1,A:A,1)))*INDEX(B:B,MATCH(E1,A:A,1)) 

然后将这些公式加在一起就可以得到我之前展示的派生公式。

然而,最后的添加是添加一个IFERROR包装器,因为如果该值小于第一个非零提供,则INDEX-MATCHINDIRECT将失败。 所以在出现错误的情况下,就意味着我们只需要将销售额乘以第一个准备金率:

 E1*B1 

当然,如果你添加一个额外的规定行:

  ABCDE ------------------------------------------ 0 0.05 Value 230000 20000 0.22 Total Provision 63600 100000 0.30 200000 0.50 

或者更改条款:

  ABCDE ------------------------------------------ 0 0.05 Value 22000 20000 0.22 Total Provision 1440 100000 0.30 

该公式将索引到适当的规定,并适当地计算。

也,

因为我知道我在我的语言环境中使用逗号和小数,我意识到你不在这里是分号列表分隔符的公式:

 =IFERROR(SUMPRODUCT((INDIRECT("A2:A"&MATCH(E1;A:A;1))-INDIRECT("A1:A"&MATCH(E1;A:A;1)-1))*INDIRECT("B1:B"&MATCH(E1;A:A;1)-1))+(E1-INDEX(A:A;MATCH(E1;A:A;1)))*INDEX(B:B;MATCH(E1;A:A;1));E1*B1)