gpt4 book ai didi

arrays - 当使用字符串数组作为输入时,TEXTSPLIT 结合 BYROW 返回意外结果

转载 作者:行者123 更新时间:2023-12-05 03:16:54 27 4
gpt4 key购买 nike

我正在测试以下简单案例:

=LET(input, {"a,b;c,d;" ; "e,d;f,g;"},
BYROW(input, LAMBDA(item, TEXTJOIN(";",,TEXTSPLIT(item,",",";", TRUE)))))

sample excel output

由于 TEXTJOINTEXTSPLIT 的逆运算,输出应该与没有最后一个 input 相同;,但它不是那样工作的。

如果我尝试使用一个范围,它会起作用:

sample excel file using range

它适用于单个字符串:

=LET(input, "a,b;c,d;", TEXTJOIN(";",,TEXTSPLIT(input,",",";", TRUE)))

它返回:a,b;c,d

我在这里做错了什么?我认为这可能是一个错误。每TEXTSPLIT文档中没有限制在使用字符串数组时使用 TEXTSPLITBYROW

最佳答案

不确定这是否会被归类为答案,但我想我会分享我的尝试。

我不认为这里的问题是 TEXTSPLIT()。我尝试了不同的东西。 1st 我尝试合并 FILTERXML() 进行拆分,结果完全相同。为了好的措施:

=BYROW({"a,b;c,d;","e,d;f,g;"},LAMBDA(item,TEXTJOIN(";",,FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(item,",",";"),";","</s><s>")&"</s></t>","//s"))))

然后我尝试使用 T(IF(1,TEXTSPLIT("a,b;c,d;",{",",";"},,1))) 但 Excel 不会让步。

以上让我相信问题实际上是BYROW()本身。尽管文档说第一个参数接受一个数组,但与其他数组函数一起使用似乎确实存在错误,您可以这样报告它。


就目前的值(value)而言;您可以使用 REDUCE() ,如评论和链接答案中所述,但我会保留它,以便更复杂地堆叠不均匀分布的列/行。在您的情况下,MAP() 可以工作并且比 BYROW() 更简单:

=LET(input, {"a,b;c,d;";"e,d;f,g;"},
MAP(input, LAMBDA(item, TEXTJOIN(";",,TEXTSPLIT(item,",",";", TRUE)))))

老实说,这就是 MAP()无论如何都是为设计而设计的。

关于arrays - 当使用字符串数组作为输入时,TEXTSPLIT 结合 BYROW 返回意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74397019/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com