数组公式,根据两个单词中的任何一个查找第1,第2,第3最大值

时间:2016-01-05 17:23:02

标签: excel excel-formula

我遇到了解决问题的方法。我有一个类型的人列表,我试图找到与这些人相关的值的排名顺序,我可以搜索某些子组的最大值。

例如,

    A        | B |  C
1 Contractor  25
2 Consultant  10
3 Contractor  5
4 Client      30

在C1中,我目前有以下几乎可以工作的公式,但它只返回“CONTRACTOR”值而不是“CONSULTANT”。我应该如何调整此公式以使其正常工作?

{=LARGE(IF(ISNUMBER(SEARCH("CONTRACTOR",$a$1:$a$4)), IF(1-ISNUMBER(SEARCH("CONSULTANT",$a$1:$a$4)),$b$1:$b$4)),1)}

然后我将此公式拖到我的C:C栏中,并将结尾“1”更改为“2”,“3”等,以找到符合搜索词的下一个最大值。

如果您有任何澄清问题,请告诉我。

2 个答案:

答案 0 :(得分:2)

使用AGGREGATE¹ function 14 用于LARGE子功能和选项 6 (忽略错误),同时强制任何不匹配错误状态(例如#DIV/0!)。

=IFERROR(AGGREGATE(14,6, (B$2:INDEX(B:B,MATCH(1E+99,B:B)))/(A$2:INDEX(A:A,MATCH(1E+99,B:B))={"Contractor","Consultant"}),ROW(1:1)), "")

ROW(1:1)填满时,=IFERROR(AGGREGATE(14,6, (B$2:INDEX(B:B,MATCH(1E+99,B:B)))/ISNUMBER(SEARCH({"contractor","consultant"}, A$2:INDEX(A:A,MATCH(1E+99,B:B)))), ROW(1:1)), "") 将成为 1,2,3等

aggregate_large

<强> Wildcard Matches

切换到ISNUMBER / SEARCH²功能对以提供通配符模式匹配。

{{1}}

aggregate_large_wildcard

¹ Excel 2010引入了AGGREGATE function。在早期版本中不可用。
² FIND function区分大小写; SEARCH function不是。

答案 1 :(得分:0)

您可以将其用作数组,然后向下拖动(从C1开始):

=IFERROR(INDEX($A$1:$A$4,LARGE(IF($B$1:$B$4<>"",ROW($A$1:$A$4)-ROW(A$1)+1),ROWS(A$1:A1))),"")

作为“奖励”,您可以通过将LARGE更改为SMALL来反转列表