Excel-365 函数无法按预期工作

问题描述 投票:0回答:1

在为“如何将行值合并到前一行的列中?”创建解决方案时,我编写了公式:

[G11] =LET(
  c,COLUMNS(Table1),
  at_l,INDEX(Table1,0,c),
  n,ROWS(Table1),
  af,FILTER(HSTACK(Table1,SEQUENCE(n)),Table1[Product]<>"null"),
  aw,DROP(VSTACK(INDEX(af,0,c+1),n+1),1),
  HSTACK(
    TAKE(af,,c),
    BYROW(
      SEQUENCE(ROWS(af)),
      LAMBDA(i,
        TEXTJOIN(", ",FALSE,
          DROP(TAKE(at_l,INDEX(aw,i)-1),INDEX(af,i,c+1))
        )
      )
    )
  )
)

手动检查没有错误,但是不行,如下图:

enter image description here

数据表:

# 数量 产品 选项 商品名称
1 3 CHR124 椅子
.FOC
2 1 SFA478 沙发
.A A
.B B
.C C
.D D
.E E
.F F
.G G
.H H
3 2 TBL8954 桌子
.我
.J J
.K K
.L L
.M M
.N N
.O O
.P P

为了调试这个问题,我编写了中间公式:

[G15] =LET(
  c,COLUMNS(Table1),
  at_l,INDEX(Table1,0,c),
  n,ROWS(Table1),
  af,FILTER(HSTACK(Table1,SEQUENCE(n)),Table1[Product]<>"null"),
  aw,DROP(VSTACK(INDEX(af,0,c+1),n+1),1),
  HSTACK(
    af,
    aw
  )
)

然后

[G19] =BYROW(
  SEQUENCE(ROWS(G15:G17)),
  LAMBDA(i,
    TEXTJOIN(", ",FALSE,
      DROP(TAKE(Table1[Item Name],INDEX(M15:M17,i)-1),INDEX(G15:L17,i,6))
    )
  )
)

这也不起作用。

但只需稍加修改即可工作:

[I19] =SCAN("",
  SEQUENCE(ROWS(G15:G17)),
  LAMBDA(a,i,
    TEXTJOIN(", ",FALSE,
      DROP(TAKE(Table1[Item Name],INDEX(M15:M17,i)-1),INDEX(G15:L17,i,6))
    )
  )
)

但是经过此修改后的主公式仍然不起作用:

=LET(
  c,COLUMNS(Table1),
  at_l,INDEX(Table1,0,c),
  n,ROWS(Table1),
  af,FILTER(HSTACK(Table1,SEQUENCE(n)),Table1[Product]<>"null"),
  aw,DROP(VSTACK(INDEX(af,0,c+1),n+1),1),
  HSTACK(
    TAKE(af,,c),
    SCAN("",
      SEQUENCE(ROWS(af)),
      LAMBDA(a,i,
        TEXTJOIN(", ",FALSE,
          DROP(TAKE(at_l,INDEX(aw,i)-1),INDEX(af,i,c+1))
        )
      )
    )
  )
)

我做了更多的调试修改,但最终什么也没得到。当我用 REDUCE 替换 TEXTJOIN 时,甚至 Excel 也崩溃了。

我找到了问题的解决方案,但上述问题仍然让我恼火。

它闻起来像一个 Excel bug,但有人可以评论它或提供解释吗?

excel excel-365
1个回答
0
投票
=LET(x,SCAN(,Table1['#],LAMBDA(a,b,IF(b="null",a,b))),
     u,UNIQUE(x),
MAKEARRAY(ROWS(u),6,LAMBDA(a,b,IF(b<6,XLOOKUP(INDEX(u,a),Table1['#],CHOOSECOLS(Table1,b)),ARRAYTOTEXT(DROP(FILTER(+Table1[Item Name],x=INDEX(u,a)),1))))))

SCAN 会重复

#
中的先前值,以防出现
null
接下来我们使用 MAKEARRAY 循环遍历该数组的唯一值,并过滤掉扫描数组 (x) 等于唯一值的
Item Name
值正在循环的 x 的值。过滤结果包装在 ARRAYTOTEXT 中。第一列是 x 到其各自列的 XLOOKUP 结果。

© www.soinside.com 2019 - 2024. All rights reserved.