从列表中返回前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这个并仔细检查。