我正在寻找一种进行某种类型的查找/匹配的方法 与奖金。它基于他们的销售量,销售量以及去年的销售量以及数量的增加。
第2行示例:假设他们将价值900美元的笔卖给了Joe(新金额为1-999)。持续 年Joe仅购买了价值$ 23的笔(先前的金额为1-24),他们将获得$ 25的赠金(奖金)。还有..
还必须有一个最小增加量(“最小增加”列)。假设乔买了 去年价值999美元的笔,今年价值1000美元的笔, 营业员不应获得奖金,因为这只是增加的费用。在这种情况下,必须至少增加$ 50。这就是“最小增加”列。
Group Min Increase Previous Amount New Amount Bonus
Min Max Min Max
Pens 50 1 24 1000 999999 45
Pens 50 1 24 1 999 25
Pens 50 25 100 1000 999999 45
Pens 5 25 100 1 999 25
Paper 10 1 24 1000 999999 50
Paper 10 1 24 1 999 25
Paper 10 25 100 1000 999999 50
Paper 5 25 100 1 999 25
我开始研究Indexmatching,但这还不够。然后我想到了求和,但实际上并没有将任何东西加在一起。
= SUMIFS(B3:B10,G1:G10,“笔”,D3:D10,“ 50”)
此外,= INDEX(range2,MATCH(TRUE,COUNTIF(range1,range2)> 0,0))将不起作用,因为这只是两个范围。
它还必须是可以不断更新的东西。
实际数据看起来像这样
Sale Prev. Group
900 23 Pens
因此,您需要找到差异,查看差异是否在组和数量的最小增加量之内(900-23> 50)。然后返回一个值。 23在1到24之间,而900在1到999之间,因此$ 25奖金。
有人有什么建议吗?我正在研究索引匹配,但是找不到如何使用范围进行匹配。
谢谢
答案 0 :(得分:2)
该公式基于执行类似于数组的操作的聚合。因此,将完整列引用保留在聚合函数中的时间尽可能短,并避免使用完整列引用。根据上图中信息的布局,在L3中放置以下公式,并根据需要向下复制。
=IFERROR(INDEX(G:G,AGGREGATE(15,6,ROW($A$3:$A$10)/(($A$3:$A$10=$K3)*($C$3:$C$10<=$J3)*($D$3:$D$10>=$J3)*($E$3:$E$10<=$I3)*($F$3:$F$10>=$I3)*((I3-J3)>=$B$3:$B$10)),1)),"No Bonus")
注意:如果由于某种原因,销售情况与表中的多行匹配,则它将返回与满足所有条件的最低行号相对应的奖励。