Excel数组公式查找基于多个条件的最大值的行

Column: A | B | C | D Row 1: Variable | Margin | Sales | Index Row 2: banana | 2 | 20 | 1 Row 3: apple | 5 | 10 | 2 Row 4: apple | 10 | 20 | 3 Row 5: apple | 10 | 10 | 4 Row 6: banana | 10 | 15 | 5 Row 7: apple | 10 | 15 | 6 "Variable" sits in column A, row 1. "Fruit" refers to A2:A6 "Margin" refers to B2:B6 "Sales" refers to C2:C6 "Index" refers to D2:D6 

题:

从上面的表格中,我想findFruit =“apple”和Margin> = 10时两个“Sales”值最大的行。正确答案是第3行和第6行的值。我尝试了以下方法成功。

我努力了

 =LARGE(IF(Fruit="apple",IF(Margin>=10,Sales)),{1,2}) + CSE 

这返回20和15,但不是行。

我努力了

 =MATCH(LARGE(IF(Fruit="apple",IF(Margin>=10,sales)),{1,2}),Sales,0)+1 

但是返回第二排和第六排的第一场比赛是来自“香蕉”而不是“苹果”的20和15。

我努力了

 =INDEX(D2:D7,LARGE(IF(Fruit="apple",IF(Margin>=10,ROW(Sales)-ROW(INDEX(Sales,1,1))+1)),{1,2}),1) 

但是这返回第7行和第5行(即“索引”6和4),因为这些只是从表格底部开始的“苹果”的第一次出现。 他们不是最大的价值。

这可以用Excel公式来完成,还是我需要一个macros? 如果macros观,我可以请帮助macros? 谢谢!

使用这个公式:

 =INDEX(D:D,AGGREGATE(15,6,ROW($A$2:$A$7)/(($B$2:$B$7>=10)*($A$2:$A$7="apple")*($C$2:$C$7 = AGGREGATE(14,6,$C$2:$C$7/(($B$2:$B$7>=10)*($A$2:$A$7="apple")),F2))),1)) 

我把1和2分别放在F2和F3find第一个和第二个。

在这里输入图像说明


编辑#1

处理我们需要添加的重复项(COUNTIF($G$1:G1,$D$2:$D$7) = 0)$G$1:G1需要引用直接位于此公式第一个位置上方的单元格。 所以公式需要至less在第2行开始。

 =INDEX(D:D,AGGREGATE(15,6,ROW($A$2:$A$7)/((COUNTIF($G$1:G1,$D$2:$D$7) = 0)*($B$2:$B$7>=10)*($A$2:$A$7="apple")*($C$2:$C$7 = AGGREGATE(14,6,$C$2:$C$7/(($B$2:$B$7>=10)*($A$2:$A$7="apple")),F2))),1)) 

在这里输入图像说明