首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >试图在google电子表格中拆分数组公式

试图在google电子表格中拆分数组公式
EN

Stack Overflow用户
提问于 2015-05-12 20:21:23
回答 2查看 3.6K关注 0票数 1

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

我希望"1.2.3.4“成为"1”、"2“、"3”、"4“。

这是一行代码(只工作1行):

代码语言:javascript
复制
=SPLIT(A2;".")

这就是我想要达到的目标(同时处理多个行):

代码语言:javascript
复制
//alone
=SPLIT(A2:A;".")

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

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

代码语言:javascript
复制
=ARRAYFORMULA(IFERROR(REGEXEXTRACT("."&A2:A;"^"&REPT(".+[^.]+";COLUMN(OFFSET(A2;;;1;4))-1)&".+([^.]+)")))

它几乎起作用了,除了它没有正确地拆分之外,下面是我得到的结果:

"1.2.3.4“改为"4”、"4“、"4”、"4“

如果我能找到正确的解决办法或者更好的选择,那将是非常棒的.

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-12 22:54:48

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

代码语言:javascript
复制
^.+[^.]+.+[^.]+.+[^.]+.+([^.]+)

.+部件将尽可能匹配任何东西,从而将最后的([^.]+)推到最后。

如果使用这样的表达式,它应该会更好地工作:

代码语言:javascript
复制
^\.[^.]*\.[^.]*\.[^.]*\.([^.]*)

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

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

以下是相应的公式:

代码语言:javascript
复制
=ARRAYFORMULA(IFERROR(REGEXEXTRACT("."&A2:A;
    "^"&REPT("\.[^.]*";COLUMN(OFFSET(A2;;;1;4))-1)&"\.([^.]*)")))
票数 5
EN

Stack Overflow用户

发布于 2015-12-04 08:46:22

你可以试试这个:

代码语言:javascript
复制
=REGEXREPLACE(A1,"\.","\"",\""")

更新: Google修复了这个问题,现在您可以在split中使用数组公式:

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

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30200697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档