试图在 google 电子表格中的 arrayformula 内拆分

trying to split within arrayformula inside google spreadsheet

我正在尝试在 google 电子表格中的 ARRAYFORMULA 函数中使用拆分函数。

我想让“1.2.3.4”变成“1”,“2” ", "3", "4"

这是单行代码(仅适用于 1 行):

=SPLIT(A2;".")

这就是我想要实现的(同时处理多行):

//alone
=SPLIT(A2:A;".")

//or with ARRAYFORMULA
=ARRAYFORMULA(SPLIT(A2:A;"."))

由于 SPLIT 函数不能在 ARRAYFORMULA 函数中使用,我搜索了一个解决方法 (ARRAYFORMULA() does not work with SPLIT()):

=ARRAYFORMULA(IFERROR(REGEXEXTRACT("."&A2:A;"^"&REPT(".+[^.]+";COLUMN(OFFSET(A2;;;1;4))-1)&".+([^.]+)")))

它几乎可以正常工作,除了它没有正确拆分,这是我得到的结果:

“1.2.3.4”变为“4”、“4”、“4”、“4”

如果我能找到真正正确工作的解决方法或更好的替代方案,那就太棒了...

您的表达式创建如下正则表达式:

^.+[^.]+.+[^.]+.+[^.]+.+([^.]+)

.+ 部分将尽可能多地匹配任何内容,从而将最后一个 ([^.]+) 推到最后。

如果您改用这样的表达式,效果应该会更好:

^\.[^.]*\.[^.]*\.[^.]*\.([^.]*)

它会一直计算每个 .,并且永远不会把最后一组推得太远。

(您可以使用 {3} 而不是重复子模式,但这会大大改变您的原始公式)

对应的公式如下:

=ARRAYFORMULA(IFERROR(REGEXEXTRACT("."&A2:A;
    "^"&REPT("\.[^.]*";COLUMN(OFFSET(A2;;;1;4))-1)&"\.([^.]*)")))

你可以试试这个:

=REGEXREPLACE(A1,"\.","\"",\""")

更新:Google 修复了这个问题,您现在可以将 arrayformula 与拆分一起使用:

=ArrayFormula(SPLIT(Sheet1!A2:A,"."))