我有一个包含很长名单和信息列表的表。我想用一个参数的最高值来调用十个名字,按顺序为1,2,... 10.我已经从过去的互联网搜索中删除了一个完全符合我想要的公式,并且它很棒。就是这样:
=INDEX(Salaries[Name],MATCH(1,INDEX((Salaries[Income]=LARGE(Salaries[Income],ROWS(C$3:C3)))*(COUNTIF(C$3:C3,Salaries[Name])=0),),0))
此公式从C4复制并通过C13粘贴。
然后我使用=VLOOKUP($C4,Salaries,COLUMNS(Salaries[[#Headers],[Name]:[Age]]),FALSE)
和=VLOOKUP($C4,Salaries,COLUMNS(Salaries[[#Headers],[Name]:[Income]]),FALSE)
分别在D列和E列中显示相应的年龄和收入。
现在,我在这最后一部分上挂了。我希望有一个用户定义的年龄限制来控制“前10名”结果。 (示例:用户定义的最大年龄为35岁,列表中填入了收入最高的十个人的姓名,并且年龄也在35岁以下。)
我知道这可以通过简单地对收入列进行排序并在年龄列上设置过滤器来轻松地在表格上完成,但我希望这个十人列表是公式驱动的。有没有人对我现有的公式进行任何推荐的编辑,或采用完全不同的方式进行此操作?
答案 0 :(得分:1)
所以将你的第一个等式改为:
=INDEX(Salaries[Name],MATCH(1,INDEX((Salaries[Income]=LARGE(IF(Salaries[Age]<= $A$3,Salaries[Income]),ROWS(C$3:C3)))*(COUNTIF(C$3:C3,Salaries[Name])=0),),0))
这是一个数组公式,所以请按Ctrl-Shift-Enter
确认答案 1 :(得分:0)
我没有太多时间,但我想我可以通过公式used elsewhere来帮助你:
假设您希望在F,G,H列(从第2行开始)中获得经过特殊过滤的数据。
列F
将返回&#34;名称&#34;,G
将返回&#34;年龄&#34;,H
将返回&#34; ;收入及#34;
我还假设数据将来自您的所有工资&#34;从C17
开始并转到C28
在F2
中,=IFERROR(INDEX(C$17:C$28,SMALL(IF(D$17:D$28>=35,ROW(C$17:C$28)-ROW(C$1)+1),ROWS(C$1:C1))),"")
作为数组( CTRL + SHIFT + ENTER )。
在G2
中,使用上面相同的公式,但将第一个C$17:C$28
更改为D$17:D$28
,因为这是年龄范围。在H2
中,使用E
代替D
。
那应该有用。如果您可以在OP中粘贴一些样本数据,我可以对此进行测试并仔细检查。