根据给定的回扣条款创建 IF 报表(每个供应商都不同)[如果 X 在 0-50k 之间,则为 10%,但如果 X 51k-100k,则为 12%]

问题描述 投票:0回答:1

在 Excel 中,我有一个包含 4 列的表格:供应商、年初至今营业额、回扣条款、回扣百分比。在回扣条款栏中,这显示了我们根据营业额返回的百分比,并且每个供应商的情况都不同。例如,供应商 XYZ 的回扣期限为 0-9,999 = 0、10,000-24,999 = 2%、25,000+ 则为 3%。

如果每个供应商的回扣条款都相同,但每个供应商都在变化,那么这会很容易,所以我想我需要尝试搜索然后如果,你知道这是否可能。

查看一些数据的示例:

供应商 年初至今营业额 回扣条款 回扣%
XYZ PLC £700.00 “0 英镑到 9,999 英镑 = 0 英镑
10,000 英镑到 24,999 英镑 = 2%
25,000 英镑+ = 总支出的 3%”
x
ABC PLC £30,000.00 “2.5 万英镑至 5 万英镑 = 1.5%
5 万英镑至 20 万英镑 = 2.5%
20 万英镑以上 = 总支出的 5.0%”
x
JJ PLC £1,000,000.00 “0 英镑至 1,099,999 英镑 = 1.0%
1,100,000 英镑至 1,299,999 英镑 = 2.0%
1,300,000 英镑+ = 4.0%”
x
LL PLC £700.00 “0 英镑至 299,999 英镑 = 3.0%
300,000 英镑至 399,999 英镑 = 3.5%
400,000 英镑至 449,999 英镑 = 4.0%
450,000 英镑+ = x
x

谢谢,

目前我只有一个基于每次回扣的 IF 函数,但这非常冗长。

例如:

=IF(B3<10000, B3*0,
IF(AND(B3>=10000, B3<25000), B3*0.02,
IF(B3>=25000, B3*0.03,"ERROR")))

想知道是否可以提前进行搜索?

excel vba if-statement search
1个回答
0
投票

要利用现有的数据来完成此操作,我们必须使用公式来标准化数据以执行 VLOOKUP:

=VLOOKUP(B2,DROP(REDUCE("",TEXTSPLIT(C2,CHAR(10)),LAMBDA(_z,_y,VSTACK(_z,HSTACK(TAKE(TOROW(--TEXTSPLIT(_y,{" ","+","="}),3),,1),TAKE(TOROW(--TEXTSPLIT(_y,{" ","+","="}),3),,-1))))),1),2,TRUE)

整个

DROP()
部分是为了使细胞正常化。

注意:我必须将

K
更改为其数值才能完成这项工作。 这些值必须是实际数字而不是字符串。

enter image description here


现在如果您对数据进行标准化:

enter image description here

那么公式就简单多了:

=VLOOKUP(B2,FILTER(O:P,N:N=A2),2,TRUE)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.