我在 Excel 中有一个范围 (B3:C8),我想从中筛选出英国人。在 SQL 中,这非常简单:
SELECT Persons FROM [myTable] WHERE Nationality = 'English'
如何对范围应用类似的过滤,其中结果不是单个值而是范围?
备注:Excel 有一个筛选按钮,但它的作用只是隐藏不需要的行。我不想要隐藏的行。
这就是我想要的桌子的样子。G3的公式应该是什么样的?
答案1
为了将名称放入某个范围内,您可以将数据制作成表格,然后使用以下方法创建数据透视表国籍作为报告过滤器和人作为行标签。然后选择英语来自国籍列表。请参见下面的屏幕截图(忽略 D 列,因为未使用);
答案2
在 G3 中输入此公式并向下拖动。这是一个数组公式,因此必须使用Ctrl Shft Enter
=IFERROR(INDEX($B$3:$B$8,LARGE(($C$3:$C$8=$E$3)*(ROW($B$3:$B$8)-2),COUNTIF($C$3:$C$8,$E$3)-(ROWS($3:3)-1))),"")
注意,IfError 仅在 XL 2007/10 中可用,否则,您需要使用:
=IF(ISERROR(INDEX($B$3:$B$8,LARGE(($C$3:$C$8=$E$3)*(ROW($B$3:$B$8)-2),COUNTIF($C$3:$C$8,$E$3)-(ROWS($3:3)-1)))),"",INDEX($B$3:$B$8,LARGE(($C$3:$C$8=$E$3)*(ROW($B$3:$B$8)-2),COUNTIF($C$3:$C$8,$E$3)-(ROWS($3:3)-1))))
答案3
此版本适用于任何版本的 Excel,并按列出的顺序给出结果
在 G3 中:
=IF(ROWS(G$3:G3)>COUNTIF(C$3:C$8,E$3),"",INDEX(B$3:B$8,SMALL(IF(C$3:C$8=E$3,ROW(C$3:C$8)-ROW(C$3)+1),ROWS(G$3:G3))))
使用 CTRL+SHIFT+ENTER 确认(压在一起)并尽可能地复制下来
答案4
=If($E$3=English,B3,"")
您可以通过以下方式使其更加通用:
=If($E$3=C3,B3,"")