试图在 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,"."))
我正在尝试在 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,"."))