【问题标题】:Filtering Dataset by values in one column按一列中的值过滤数据集
【发布时间】:2013-06-01 19:15:52
【问题描述】:

所以我有一个参与者的 excel 数据集,这些参与者可能有资格参与一项研究,其中包括他们的姓名、年龄、电话号码等......例如:

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

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

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

我尝试过类似的方法,选择一个空列并使用 =IF($Name-column = $Subset-column, First-Column:Last-Column, "") 但这只会检查每个单元格中的名称是否名称列与子集列中的名称匹配。我需要的是检查名称列中的任何名称是否与子集列中的名称匹配,如果匹配,则将该行复制到新工作表中。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    使用VLOOKUP 应该可以解决问题。

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

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

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

    【讨论】:

      【解决方案2】:

      您可以Index所有数据,然后Match 行到子集名称并拉过每一列。

      例如,它看起来像这样:

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

      让我们分解一下:

      索引函数接受以下参数:

      Index(Array, Row_Number, Column_Number)
      

      数组将是您拥有的所有数据,行号我们将使用匹配函数(如下)来查找要从哪一行获取数据,列号表示要从索引中的哪一列提取信息(我们将不断增加它以获取所有列)。

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

      Match(Lookup_Value, Lookup_Array, Match_Type)
      

      对于查找值,我们要将其指向子集列表的当前行,查找数组将是我们之前在主列表中定义的索引中可用的所有名称,匹配类型将等于 0(对于完全匹配)

      看看这个excel document

      【讨论】:

      • 谢谢!我认为这会奏效。我收到一个目录弹出窗口,指出它“找不到'全部',请选择”。那么,我是否将其放在一个空列中并拉过单元格?我是否包括所有!和子集!方程式中的部分?
      • 您可以以我的电子表格为例,但All 只是指包含所有数据的选项卡名称。您需要将这些内容替换为您自己的名称和地区。
      猜你喜欢
      • 2018-06-28
      • 1970-01-01
      • 2019-07-08
      • 1970-01-01
      • 2022-10-30
      • 2017-11-12
      • 2021-12-17
      • 2016-02-05
      • 2011-11-14
      相关资源
      最近更新 更多