【问题标题】:trying to split within arrayformula inside google spreadsheet试图在谷歌电子表格内的arrayformula内拆分
【发布时间】:2015-05-12 20:21:23
【问题描述】:

我正在尝试在 Google 电子表格中的 ARRAYFORMULA 函数中使用 split 函数。

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

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

=SPLIT(A2;".")

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

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

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

由于不能在 ARRAYFORMULA 函数中使用 SPLIT 函数,因此我搜索了一种解决方法(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”

如果我可以让解决方法真正正常工作,或者更好的替代方案,那就太棒了......

【问题讨论】:

标签: regex split google-sheets formulas


【解决方案1】:

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

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

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

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

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

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

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

下面是对应的公式:

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

【讨论】:

  • 你能提供例子吗?上面提到的 ARRAYFORMULA(...) 不起作用 干杯
【解决方案2】:

你可以试试这个:

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

更新:谷歌修复了这个问题,您现在可以使用带有拆分的数组公式:

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

【讨论】:

  • 虽然建议的公式作为数组公式工作,但对于1.2.3.4,它返回1","2","3","4,而不是由分隔符(点)分割的值。
猜你喜欢
  • 1970-01-01
  • 2014-12-18
  • 1970-01-01
  • 1970-01-01
  • 2019-06-15
  • 2017-11-12
  • 2021-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多