基于来自另一个单元格的动态标准的过滤功能
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",...)
在 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",...)