2015-12-08 71 views
0

我有一张包含名称和信息的长列表。我想按照1,2,...的顺序调出具有某个参数的最高值的十个名称。10.我已经从过去的互联网搜索中剔除了一个公式,这些公式完全符合我的需要,并且它的效果很好。这是它:从列表中返回前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中调出相应的年龄和收入。

Screenshot

现在,我越来越挂在这最后一部分。我想要有一个用户定义的年龄限制来控制“前10名”的结果。 (例如:用户定义的最大年龄为35,并且该列表填充了收入前十位的人的姓名,并且也是35岁及以下。)

我知道这可以很容易地完成表格本身通过简单地对收入列进行排序并在年龄栏中设置筛选器,但我希望将这个10人列表进行公式驱动。有没有人对我的现有公式有任何推荐的编辑或者完全不同的方式来解决这个问题?

File Download Link

+2

18做$ 122K,22做$ 195K ......是你高盛? – findwindow

+0

哈哈,这只是随机数据! – chronofreak

回答

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键输入

+0

哦,我看到你做了什么..我试图修改那里的公式,但我没有得到正确的语法。我把这个代码,但我得到#N/A结果。然而,将它作为一个数组输入到单元格中的确有诀窍!谢谢! (薪金[名称],MATCH(1,INDEX((薪金[收入] =大(IF(薪金[年龄] <= $ A $ 3,薪金[收入]),ROWS(C $ 3:C3)) )*(COUNTIF(C $ 3:C3,Salaries [Name])= 0),),0))} – chronofreak

+0

@chronofreak是的,我忘了说对不起。 –

0

我没有太多的时间,但我想我可以让你用自己的方式与一个公式我已经used elsewhere

比方说,你想在你的栏目专门过滤的数据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中粘贴一些样本数据,我可以测试这个并仔细检查。

+0

我试过这个建议,但没有运气。我输入了公式,只是将范围从'17 -28'更改为'17 -92',以包含整个列表。结果不仅限于35岁,而且结果受到原始数据排序顺序的影响。我在原始文章中添加了一个指向该文件的链接。任何其他想法? – chronofreak

相关问题