我有一个提供级别的表。
Sales Provision
0 5%
20 000 22%
100 000 30%
一个推销员在前20,000个中有5%的拨备,在接下来的8万个中有22%,在上面的所有内容上有30%。
例如,售价为230 000的推销员将有提供
=20 000 * 0,05 + 80 000 * 0,22 + 130 000 * 0,30
如何用公式有效地表达这一点?公式
答案 0 :(得分:1)
我可以说这对于要求#2有用(希望如此):
即使我添加更多的提供级别,也需要工作
但请注意,我不确定要求#1:
需要很容易复制到多行(每行描述一个推销员)
无论如何,有了这些数据:
A B C D E
------------------------------------------
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)
如果我们打破这个公式:
第一个基本步骤是找到销售价值所在的指数。这是与销售价值相比的第一个较低价值。在您的示例数据中,这是直截了当的,因为索引是提供列表中的最后一个。但是,为了适应列表范围内的销售价值,我们可以使用:
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))
用SUMPRODUCT
围绕它来获得总数:
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-MATCH
包装器,因为如果该值小于第一个非零配置,则INDIRECT
和E1*B1
将失败。因此,如果出现错误,则意味着我们只需要将销售价值乘以第一个提供率:
A B C D E
------------------------------------------
0 0.05 Value 230000
20000 0.22 Total Provision 63600
100000 0.30
200000 0.50
当然,如果你添加一个额外的供应行:
A B C D E
------------------------------------------
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)
该公式将索引到适当的规定并正确计算。
此外,
因为我知道我在我的语言环境中使用逗号和小数,我意识到你不是这里的分号列表分隔符的公式:
if (myWindow.closed) {
delete window.myWindow;
}