根据另一个单元格中的过滤器返回数据选择

时间:2020-07-08 11:33:35

标签: excel vba filter excel-formula

我尝试查找,但是无法在网站上的任何地方找到此信息。

我正在尝试返回符合其他单元格中条件的数据选择。

我有一个工作表(Sheet1),其中包含我的所有数据(大约38000行),我需要在另一个工作表(Sheet2)上对此数据中的某一列进行过滤。例如,如果我想返回在Sheet1的P列中有7的所有成员?并返回Sheet2中Sheet1中出现的所有列

到目前为止,我正在尝试INDEX(array,MATCH())的工作方式,但这仅返回第一个在P列中具有7的人,而不是返回每个成员。而且,如果我逐行进行操作,则数据中将存在不匹配的空白,希望它们全部集中到顶部。 (我希望这是有道理的)

Sheet1 Sheet2

Sheet2中显示的结果使用以下公式:

=INDEX(Sheet1!A:A,MATCH($B$1,Sheet1!I:I,0))

这真的可以实现吗?

如果我对所问的内容不清楚,请告诉我。

1 个答案:

答案 0 :(得分:1)

使用INDEX是正确的选择,但是MATCH只会为您带来第一个结果,这也是正确的。您需要一个数组公式,该公式将携带您要检索的行。这是一个简单的示例:

enter image description here

要获取此信息,请选择H2:J21并将其作为数组公式输入(与Ctrl + Shift + Enter一起提交):

=IFERROR(INDEX(A2:C21,SMALL(IF(C2:C21=E2,ROW(A2:A21)-ROW(A1),FALSE),ROW(A2:A21)-ROW(A1)),COLUMN(A1:C1)),"")

更新: 正如@OverflowStacker指出的那样,对于您的示例问题,由于表标题位于第1行,并且看起来您的查询列数据中没有列标题,因此可以使用更简单的公式:

=IFERROR(INDEX(A1:C21,SMALL(IF(C1:C21=E2,ROW(A1:A21),FALSE),ROW(A1:A21)),COLUMN(A1:C1)),"")