基于来自另一个单元格的动态标准的过滤功能

Filter function based on dynamic criteria from another cell

在 google 电子表格中,我尝试创建一个动态过滤器,它取决于另一个单元格的内容。其实我需要这样的东西:

if A1 = "1" {
  filter (A70:D73;E70:E73="A")
}
if A1 = "2" {
  filter (A70:D73;F70:F73="B")
}

有人知道如何创建这样的动态过滤器吗?

试试这个:

=filter(    A70:A73; OR(  AND(A1=1; E70:E73="A") ; AND(A1=2; F70:F73="B")  )    )

Obs:我通常 "indent" 在这些大公式中使用空格。但在某些情况下,最好创建具有​​部分结果的隐藏列,这样公式就不会变得太可怕。

Obs2:把不想改的列或行锁定也不错,像这样:

=filter(    $A:$A; OR(  AND($A=1; $E:$E="A") ; AND($A=2; $F:$F="B")  )    )

我为此找到了一个古怪的解决方案。 首先,我将问题分成了一些较小的部分。

我创建了一个额外的列,我称之为 'filter' 列。 在这个过滤器列旁边,我有一个矩阵,其中包含所有可能的过滤器选项

在此电子表格中,您可以看到此解决方案的示例

Dynamic matrix filter spreadsheet

为了确定一个项目是否是矩阵的一部分,我只使用 "Countifs" 所以对于矩阵中的每一行:

=if($D<>"";COUNTIFS(C4:G4;$D);"")

字段 $D$1 是过滤器的输入。这使过滤器动态化,因为您将每个公式都放在该字段中,但在此示例中,单元格只是带有文本

的字段

过滤列 (B4:B9) 产生一个数字。而这个数字是用来做过滤器的

=filter(A4:A9;B4:B9=1)

如果 B4:B9 =1,可以在此处查找,但您也可以为“1”放置一个单元格,这样您可以获得更大的灵活性,并以您想要的方式使过滤器动态化。

另一种方式可能会多一点"scalable"(但也可能不会):

=FILTER(CHOOSE(A1,A70:D73,A70:A73,...),CHOOSE(A1,E70:E73,F70:F73,...)=CHOOSE(A1,"A","B",...)