我想对从
A:G
开始的多个列应用过滤器函数,并且输出中仅包含 B
,D
列。我该怎么办?
例如
=FILTER($A$1:$G$7,$K$1:$K$7=$K$1)
会产生与条件匹配的行溢出数组,但输出仍将有 7 列 (A:G
)。我可以选择只输出 Column B
& D
吗?
选项1:
=FILTER(FILTER(A1:G7,K1:K7=K1),{0,1,0,1,0,0,0})
选项2:- 参考
=FILTER(INDEX(tblData,SEQUENCE(ROWS(tblData)),{4,3,5}),tblData[Customer Name]=I3)
选项3:- 罗里回答
=FILTER(CHOOSE({1,2},B1:B7,D1:D7),$K$1:$K$7=$K$1)
选项4:-由P.b评论
=FILTER(FILTER($A$1:$G$7,$K$1:$K$7=$K$1),(COLUMN(A:G)=COLUMN(B:B))+(COLUMN(A:G)=COLUMN(D:D)))
您可以将原始
FILTER
函数嵌套在 another FILTER
函数中,并指定 1
的数组,并且 0
提及您需要哪一列和不需要哪一列。
例如,在上面的问题中,如果我只想要B和D列,我可以这样做:
=FILTER(FILTER(A1:G7,K1:K7=K1),{0,1,0,1,0,0,0})
由于B和D是第2列和第4列,因此您需要在数组中的该位置指定一个
1
类似地,如果您想过滤来自
C:K
的列并且仅输出列 C
、D
和 G
,那么您的公式将是:
=FILTER(FILTER(C1:K7,M1:M7=M1),{1,1,0,0,1,0,0,0,0})
另一种看起来很复杂的方法是:
请注意,此方法允许您更改输出列的顺序。您可以参考以下网站了解其工作原理的详细说明。
=FILTER(INDEX(tblData,SEQUENCE(ROWS(tblData)),{4,3,5}),tblData[Customer Name]=I3)
这其实是Rory提供的答案
=FILTER(CHOOSE({1,2},B1:B7,D1:D7),$K$1:$K$7=$K$1)
B1:B7
替换为B1:C7
)基于下面 P.b 的评论
=FILTER(FILTER($A$1:$G$7,$K$1:$K$7=$K$1),(COLUMN(A:G)=COLUMN(B:B))+(COLUMN(A:G)=COLUMN(D:D)))
参考 Google Sheet 中提出了类似的问题。但 Google Sheet 也有
Query
功能,明确支持选择特定列
您也可以像这样使用
CHOOSE
:
=FILTER(CHOOSE({1,2},B1:B7,D1:D7),$K$1:$K$7=$K$1)
这还允许您通过更改
CHOOSE
函数中的顺序来对输出中的列重新排序。
迄今为止最简单的方法。
应用范围,您按照首选顺序选择的列,并可以选择使用
-
从右侧开始工作
=CHOOSECOLS(FilteredRange,2,4)
=CHOOSECOLS(FILTER($A$1:$G$7,$K$1:$K$7=$K$1),2,4)
=CHOOSECOLS(FILTER($A$1:$G$7,$K$1:$K$7=$K$1),4,2) 'Custom order
=CHOOSECOLS(FILTER($A$1:$G$7,$K$1:$K$7=$K$1),-6,-4) 'From the right side
这些天我专门使用选项#2,但使用一系列单元格而不是数组。
=FILTER(INDEX(tblZero,SEQUENCE(ROWS(tblZero)),A2:M2),tblZero[TakenBy]=A1)
使用表格的 [#Headers] 也可以为我提供列标题。
=FILTER(INDEX(tblZero[#Headers],SEQUENCE(ROWS(tblZero[#Headers])),A2:M2),'Zero Dollar Review Data'!A1<>"")
我使用列标题正上方的行来保存列号。这样,我只需输入列号即可获得列标题和数据。我还可以在列号单元格中使用一些简单的公式来创建根据所用条件自定义的输出。因此,如果我输入“TBT”作为 TakenBy 值,我可以显示该特定代表特有的一组列,然后如果我输入“DXD”,我可以显示一组不同的列。
是的,您可以为 B
=FILTER($B$1:$B$7,$K$1:$K$7=$K$1)
和 D =FILTER($D$1:$D$7,$K$1:$K$7=$K$1)
创建 2 个单独的列
除了其他答案之外,还需要记住一些事情:如果您将新列添加到目标矩阵以进行过滤,从而更改输出过滤列的位置,则您的公式可能不会更新。例如,如果您使用数字列引用(如
=CHOOSECOLS(filtered_array, {2,4})
中所示),就会发生这种情况。
防止这种情况的一种方法是给目标数据集动态表格式并使用动态表(命名)列引用和COLUMN公式,因为COLUMN将查找列的标题并始终返回相同的数字列引用如果添加新列:
=CHOOSECOLS(FILTER(A:W,F:F="YourTargetFilterValue"),
COLUMN([Name]),
COLUMN([Surname]))