繁体   English   中英

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

[英]trying to split within arrayformula inside google spreadsheet

我试图在谷歌电子表格中的ARRAYFORMULA函数中使用split函数。

我希望“ 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()不能与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,"\.","\"",\""")

更新:谷歌修复此问题,您现在可以使用带分割的arrayformula:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM