在创建“如何将行值合并到前一行的列中? ”的解决方案时,我编写了以下公式:
[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))
)
)
)
)
)
手动检查没有错误,但是却不行,如下图所示:
数据表:
# | 数量 | 产品 | 选项 | 产品名称 |
---|---|---|---|---|
1 | 3 | CHR124 | 椅子 | |
无效的 | 无效的 | 无效的 | .焦点 | 多雾路段 |
2 | 1 | SFA478 | 沙发 | |
无效的 | 无效的 | 无效的 | 。一个 | 一个 |
无效的 | 无效的 | 无效的 | .B | 乙 |
无效的 | 无效的 | 无效的 | .C | 碳 |
无效的 | 无效的 | 无效的 | .D | 德 |
无效的 | 无效的 | 无效的 | .E | 埃 |
无效的 | 无效的 | 无效的 | .F | F |
无效的 | 无效的 | 无效的 | .G | 格 |
无效的 | 无效的 | 无效的 | .H | 赫 |
3 | 2 | TBL8954 | 桌子 | |
无效的 | 无效的 | 无效的 | 。我 | 我 |
无效的 | 无效的 | 无效的 | .J | J |
无效的 | 无效的 | 无效的 | .K | 钾 |
无效的 | 无效的 | 无效的 | .L | 大号 |
无效的 | 无效的 | 无效的 | .M | 米 |
无效的 | 无效的 | 无效的 | .N | 否 |
无效的 | 无效的 | 无效的 | .O | 哦 |
无效的 | 无效的 | 无效的 | .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 错误,但有人可以评论它或提供解释吗?
在索引中添加交集
@
会告诉 Excel 该数组是一个单个值(即使它是)。