![](/img/trans.png)
[英]Using regexmatch & filter inside arrayformula (Google Sheets)
[英]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.