按一列中的值过滤数据集

所以我有一个可能有资格参加由他们的姓名,年龄,电话号码等组成的研究的参与者的excel数据集…例如:

名称| 年龄| 电话| 电子邮件| 地址| 参与研究

我也有一列有资格参加新研究的参与者的名字; 它是名称列中数据的子集。

我需要做的是select名称在子集列中的所有参与者,并将所有列中的所有信息复制并粘贴到新列中。

我曾尝试类似的,select一个空列,并使用= IF($名称列= $子集列,第一列:最后列,“”)但这只会检查名称列的每个单元格中的名称匹配子集列中的名称。 我需要的是检查名称列中的任何名称是否与子集列中的名称匹配,如果是,则将该行复制到新的工作表中。

使用VLOOKUP应该可以做到这一点。

在名称表旁边的空白列中,您需要input一组公式,如:

  =IFERROR(VLOOKUP(<name_from_current_row_of_name_table>,<subset_column_range>,1,FALSE),0) 

然后,您可以将filter应用于名称表,并设置一个条件以排除新列中的0。 将过滤的数据复制到新工作表。

您可以对所有数据进行Index ,然后将行Match到子集名称,然后将每列拖出。

例如,它看起来像这样:

 =INDEX(All!A1:F4,MATCH(Subset!A2,All!A1:A4,0),2) 

我们来分解一下:

索引函数采用以下参数:

 Index(Array, Row_Number, Column_Number) 

该数组将包含您所有的数据,行号我们将使用匹配函数(下面)来查找从哪个行获取数据,并且列号表示索引中的哪一列用于提取信息(我们将继续增加这个来获得所有的列)。

要返回正确的行,我们将使用匹配

 Match(Lookup_Value, Lookup_Array, Match_Type) 

对于查找值,我们希望将其指向子集列表的当前行,查找数组将是我们先前在主列表中定义的索引中可用的所有名称,并且匹配types将等于0(对于精确匹配)

看看这个excel文件