【问题标题】:How to make the Filter function in google sheet more flexible by using Index function?如何使用索引功能使谷歌表格中的过滤功能更加灵活?
【发布时间】:2021-07-06 01:41:11
【问题描述】:

大家好,

我有一个从 A 列到 H 列的数据范围。我想通过匹配这两个条件从数据范围中提取整行数据并将其粘贴到 L 列 S 列:

  • B 列中的名称与 J 列中的名称匹配
  • A 列中的Round 与单元格L1 中的圆形匹配。

为此,我使用了FILTER 函数。如果在同一个Round 中没有重复的名称,它会很好地工作。在我上面的截图中,单元格L5&L10 中有错误,因为2nd Round 中有两个Peter。我可以知道我应该如何修改我的Filter 函数,以便它可以打印A8:H8J5:S5 范围内的数据,还可以打印从A19:H19L10:S10 的数据?

我正在尝试将INDEX 包含在公式中,例如: =IFNA(INDEX(FILTER( $A$2:$H$21,$B$2:$B$21=J5,$A$2:$A$21=$L$1),COUNTIF())) 但它不能以我想要的方式工作。希望得到一些建议。任何帮助将不胜感激!

已编辑

上面的截图是使用下面公式的结果:

=query($A$2:$H$21, "where A = '"&L1&"'", 0)

【问题讨论】:

    标签: google-sheets indexing filter


    【解决方案1】:

    也许试试 query() 代替?

    =query($A$2:$H$21, "where A = '"&L1&"'", 0)
    

    或者,用

    获取所有行(所有名称)
    =FILTER($A$2:$H$21, $A$2:$A$21=$L$1)
    

    编辑

    如果您真的想查找在 J 列中输入的名称,您可以尝试这个复杂的解决方案

    =ArrayFormula(if(len(J2:J), iferror(vlookup(J2:J&COUNTIFS(J2:J, J2:J, row(A2:A), "<="&row(A2:A)), query( {B2:B21&COUNTIFS(A2:A21, L1, B2:B21, B2:B21, row(A2:A21), "<="&row(A2:A21)), $A$2:$H$21}, "where Col2 = '"&$L$1&"'", 0), {2, 3, 4, 5, 6, 7, 8, 9}, 0)),))
    

    查看标签/表格“JPV”,单元格 L2 并检查它是否适合您?

    【讨论】:

    • 查询功能好像不行。如果我使用=query($A$2:$H$21, "where A = '"&amp;L1&amp;"' AND B ='"&amp;J5 &amp;"'", 0),数据范围内将有 2 行满足我的条件,即第 8 行和第 19 行。因此输出将有 2 行。由于我在单元格L5上会有另一个查询功能,所以单元格L5 上会有一个错误:Array result was not expanded because it would overwrite the data in L6
    • 在变体选项卡中,我隔离了第一个 countif 并将其输入到 K2 中。如您所见,该公式创建了在 J 中找到的名称的计数。查询中使用了相同的方法。然后在 vlookup 中使用名称和编号来检索正确的行。 LEN 部分用于将输出限制为在 J 列中具有值的那些行。
    • vlookup 需要返回的具有列号(来自查找范围)的数组。
    • 嗯,查询的第一个元素是一个内联数组 { } 其中第一个元素(或列)是 B2:B21&COUNTIFS(A2:A21, L1, B2:B21, B2:B21, row (A2:A21), "
    • 我创建了一个额外的选项卡“步骤”,其中包含解决方案的三个主要步骤。它可以帮助您了解解决方案的工作原理。
    【解决方案2】:

    如果您使用的是小型数据集,您还可以使用数据 > 创建过滤器,然后在 A 列中选择第二轮。完成后,只需日期 > 关闭过滤器。而且您无需向右滚动即可快速查看已过滤和未过滤的数据。

    另一个想法是创建第二张工作表。将第一张表命名为 Data,第二张表为 Round 2,第三张表为​​ Round 3,等等。

    然后在第 1 行添加标题行。

    在第 2 轮工作表的单元格 A2 中输入:

    =QUERY(Data!A1:H21,"where A = '"&A1&"'",0)
    

    这将在单独的表格中为您提供所有第 2 轮数据。

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 1970-01-01
      • 2015-07-04
      • 2017-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多