我需要帮助。我有一个二维数组或单元格区域,我打算使用excel数组公式来筛选此数组,以便所有包含完全为零或空单元格的行和列都不包含在结果中。例如,在下图中,我想过滤给定的数据,以便删除C列和第5行中的数据,因为它们完全包含零。是否可以在excel中实现此操作?如果可以,我可以使用哪个Excel公式?**注意:**我使用的是Excel 2021。
j91ykkif1#
你可以这样做:
=FILTER(FILTER(A2:F6,BYROW(A2:F6,LAMBDA(a,COUNTIF(a,">0")>0))),BYCOL(A2:F6,LAMBDA(c,COUNTIF(c,">0")>0)))
fkaflof62#
使用MMULT:
=LET( rng,A2:F6, clm,COLUMNS(rng), f,FILTER(rng,MMULT(--(--rng=0),SEQUENCE(clm,,1,0))<>clm), FILTER(f,TRANSPOSE(MMULT(--TRANSPOSE(f=0),SEQUENCE(ROWS(f),,1,0)))<>ROWS(f)))
所有这些都应在Excel 2021中提供
qv7cva1a3#
如果您的Excel版本中提供了此类Excel函数,则可以使用以下方法(使用CHOOSEROWS,CHOOSECOLS)。在单元格G2中:
CHOOSEROWS
CHOOSECOLS
G2
=LET(rng, A1:E5, ri, ROW(A1), ci, COLUMN(A1), rows, BYROW(rng, LAMBDA(a, IF(COUNTIF(a,"<>0")>0, ROW(a)-ri+1,0))), cols, BYCOL(rng, LAMBDA(a, IF(COUNTIF(a,"<>0")>0, COLUMN(a)-ci+1,0))), CHOOSECOLS(CHOOSEROWS(rng, rows), cols) )
或没有LET函数(较短但更难理解):
LET
=CHOOSECOLS(CHOOSEROWS(A1:E5, BYROW(A1:E5, LAMBDA(a, IF(COUNTIF(a,"<>0")>0, ROW(a)-ROW(A1)+1,0)))), BYCOL(A1:E5, LAMBDA(a, IF(COUNTIF(a,"<>0")>0, COLUMN(a)-COLUMN(A1)+1,0))))
以下是输出x1c 0d1x主要思想是识别范围内的非空行/列,我们分别使用BYROW/BYCOL,赋值0很重要(无效行或列)。CHOOSEROWS、CHOOSECOLS仅考虑有效行或列值。由于我们使用ROW/COLUMN函数,如果输入范围(rng)不是从第一行/列开始,我们使用ri、ci值进行调整。如果不是这样,则可以将其删除。
BYROW
BYCOL
0
ROW/COLUMN
rng
ri
ci
3条答案
按热度按时间j91ykkif1#
你可以这样做:
fkaflof62#
使用MMULT:
所有这些都应在Excel 2021中提供
qv7cva1a3#
如果您的Excel版本中提供了此类Excel函数,则可以使用以下方法(使用
CHOOSEROWS
,CHOOSECOLS
)。在单元格G2
中:或没有
LET
函数(较短但更难理解):以下是输出x1c 0d1x
主要思想是识别范围内的非空行/列,我们分别使用
BYROW
/BYCOL
,赋值0
很重要(无效行或列)。CHOOSEROWS
、CHOOSECOLS
仅考虑有效行或列值。由于我们使用ROW/COLUMN
函数,如果输入范围(rng
)不是从第一行/列开始,我们使用ri
、ci
值进行调整。如果不是这样,则可以将其删除。