从列表中返回前10个值(具体条件!)

我有一张包含一长串名字和信息的表格。 我想用一个特定参数的最高值来调用这十个名字,按1,2,…的顺序排列。10.我已经从过去的互联网search中剔除了一个公式,而这正是我想要的,它效果很好。 就是这个:

=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岁以下)

我知道这可以通过简单的sorting收入列和在年龄栏上设置一个filter来轻松完成,但是我希望这个十人名单是由公式驱动的。 有没有人有build议编辑我现有的公式或完全不同的方式去做这个?

文件下载链接

所以把你的第一个公式改为:

  =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确认

我没有太多的时间,但我想我可以用你在别处使用的一个公式来帮助你。

假设您希望在F,G,H列(从第2行开始)中筛选出特定的数据。

F列将返回“姓名”, G将返回“年龄”, H将返回“收入”。

我还假设数据将从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中粘贴一些样本数据,我可以testing这个并仔细检查。