按一列中的值过滤数据集
所以我有一个可能有资格参加由他们的姓名,年龄,电话号码等组成的研究的参与者的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文件