在 =FILTER() 中排除空白单元格,但将其余部分保留在行中

Exclude blank CELLS in =FILTER() but keeping the rest in the row

我只看到了如何在只有一个空白单元格时删除整行,但我基本上只想将单元格向右滑动:

原文:

A B C D
1 Data Data1
2 Data Data2
3 Bad Data Data3
4 Data Data4
5 Data Data5

过滤后尝试获取的结果:

A B C D
1 Data Data1
2 Data Data2
3 Data Data4
4 Data Data5

我知道这很奇怪,因为通常这意味着事情会很混乱,但 B、C 和 D 列是互斥的,因此它们永远不会同时具有值​​。我也在尝试通过使用功能而不是单击选项卡中的按钮来完成此操作。

使用 LET 和 BYROW:

=LET(
    grp,A1:A5,
    dta,BYROW(B1:D5,LAMBDA(a,INDEX(a,MATCH("*",a,0)))),
    FILTER(CHOOSE({1,2},grp,dta),grp<>"Bad Data"))

BYROW 部分逐行显示数据,returns 第一个单元格,每行中的数据作为数组。

然后只需使用 CHOOSE() 将两个数组并排堆叠并根据条件进行过滤即可。

目前Beta中有一个功能叫HSTACK,可以在整体发布的时候代替CHOOSE

=LET(
    grp,A1:A5,
    dta,BYROW(B1:D5,LAMBDA(a,INDEX(a,MATCH("*",a,0)))),
    FILTER(HSTACK(grp,dta),grp<>"Bad Data"))