拆分函数奇怪地处理破折号

Split function treating dashes oddly

为什么 =SPLIT("1,2-5,4", ",")

等于

1 42040 4

而不是

1 2-5 4 ?

我已将所有单元格设置为纯文本格式。

Regextract 应该会为您提供所需的输出。尝试:

=ArrayFormula(regexextract("1,2-5,4", {"^(\d+),",",(.+),",",(\d+)$"}))

补充 JPV 的回答。

您可以使用:

=REGEXEXTRACT(A1,"(.*?),(.*?),(.*)")

这 "hard-coded" 正好拆分 3 个元素(如 JPV 那样)。为了提供更大的灵活性,您可以使用类似的东西:

=REGEXEXTRACT(A1&REPT(",",10),REPT("(.*?),",10))

限制为最多 10 个元素(可以更改该数字以适应)。但是,它将输出一个数组,该数组的长度始终为最大元素数(用空白单元格填充)。您可以使用 QUERY 或 FILTER 来过滤掉那些空白单元格 - 公式会变得有点复杂。

或者,您可以 "code" 您的字符串以避免自动日期强制转换,然后 "uncode" 它在 SPLIT 之后:

=ArrayFormula(SUBSTITUTE(SPLIT(SUBSTITUTE(A1,"-","x"),","),"x","-"))

在单元格中使用 1,2-5,4 时,可以根据需要使用数据 > 将文本拆分为列...拆分。