excel 筛选不包括空行和空列的二维数组

qaxu7uf2  于 2022-12-27  发布在  其他
关注(0)|答案(3)|浏览(174)

我需要帮助。我有一个二维数组或单元格区域,我打算使用excel数组公式来筛选此数组,以便所有包含完全为零或空单元格的行和列都不包含在结果中。例如,在下图中,我想过滤给定的数据,以便删除C列第5行中的数据,因为它们完全包含零。是否可以在excel中实现此操作?如果可以,我可以使用哪个Excel公式?**注意:**我使用的是Excel 2021。

j91ykkif

j91ykkif1#

你可以这样做:

=FILTER(FILTER(A2:F6,BYROW(A2:F6,LAMBDA(a,COUNTIF(a,">0")>0))),BYCOL(A2:F6,LAMBDA(c,COUNTIF(c,">0")>0)))
fkaflof6

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中提供

qv7cva1a

qv7cva1a3#

如果您的Excel版本中提供了此类Excel函数,则可以使用以下方法(使用CHOOSEROWSCHOOSECOLS)。在单元格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函数(较短但更难理解):

=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很重要(无效行或列)。CHOOSEROWSCHOOSECOLS仅考虑有效行或列值。由于我们使用ROW/COLUMN函数,如果输入范围(rng)不是从第一行/列开始,我们使用rici值进行调整。如果不是这样,则可以将其删除。

相关问题