我遇到了解决问题的方法。我有一个类型的人列表,我试图找到与这些人相关的值的排名顺序,我可以搜索某些子组的最大值。
例如,
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”等,以找到符合搜索词的下一个最大值。
如果您有任何澄清问题,请告诉我。
答案 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等。
<强> Wildcard Matches 强>
切换到ISNUMBER / SEARCH²功能对以提供通配符模式匹配。
{{1}}
¹ 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
来反转列表