根据多个条件和数字范围返回值

时间:2018-09-19 20:19:48

标签: excel

  

我正在寻找一种进行某种类型的查找/匹配的方法   与奖金。它基于他们的销售量,销售量以及去年的销售量以及数量的增加。

     

第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奖金。

有人有什么建议吗?我正在研究索引匹配,但是找不到如何使用范围进行匹配。

谢谢

1 个答案:

答案 0 :(得分:2)

POC

该公式基于执行类似于数组的操作的聚合。因此,将完整列引用保留在聚合函数中的时间尽可能短,并避免使用完整列引用。根据上图中信息的布局,在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")

注意:如果由于某种原因,销售情况与表中的多行匹配,则它将返回与满足所有条件的最低行号相对应的奖励。