2017-07-13 70 views
0
最大值的列
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 

问:Excel中数组公式找到根据多个条件

从上面的表格,我想找到两个最大的“销售”值的行时水果=“苹果”和保证金> = 10。正确的答案将是行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 

,但返回的行2和6的第一场比赛,拿出从“香蕉”不是“苹果”的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公式来完成,还是我需要一个宏?如果宏观,我可以请帮助宏?谢谢!

回答

1

使用以下公式:

=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)) 

我在F2和F3把1和2分别以找到第一和第二。

enter image description here


编辑#1

对付我们需要添加(COUNTIF($G$1:G1,$D$2:$D$7) = 0)重复。 $G$1:G1需要引用直接位于此公式的第一个位置上方的单元格。所以公式需要开始在至少连续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)) 

enter image description here

+0

这是绝对精彩。谢谢Scott!您的解决方案和聚合功能非常强大。它有一个例外。如果两个最高值相等,则只返回最低的行号。我猜想最强大的解决方案是用VBA? – ZQN

+0

请参阅编辑,如果回答您的问题,请记住标记为正确。 @ZQN –

+0

谢谢@Scott Craner,这是非常有益的,非常感谢!根据要求打勾 – ZQN