首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >REGEXEXTRACT提取值并对一系列数字求和

REGEXEXTRACT提取值并对一系列数字求和
EN

Stack Overflow用户
提问于 2018-10-26 08:14:05
回答 2查看 512关注 0票数 0

在Google电子表格中,我有一行随机的文本和数字,例如:

K,,,1-3,,K,RBI-1,RBI-4

我想要获取所有出现的RBI-[1-4],并对每个RBI-[1-4]的值求和。我想出了以下几个我想要的东西的数组:

=ARRAYFORMULA((RIGHT(iferror(REGEXEXTRACT(A1:H1,"RBI-[1-4]"),0))))

产生:

0,0,0,0,0,0,1,4

但是现在,当我想对结果求和时,我得到的结果是零。

=ARRAYFORMULA(SUM((RIGHT(iferror(REGEXEXTRACT(A1:H1,"RBI-[1-4]"),0)))))

产生

0

有什么建议我该往南走吗?

EN

回答 2

Stack Overflow用户

发布于 2018-10-26 09:56:46

公式

代码语言:javascript
复制
=ARRAYFORMULA(SUM(value((RIGHT(iferror(REGEXEXTRACT(A1:H1,"RBI-[1-4]"),0))))))

解释

REGEXTRACT以文本形式返回值,因此在对它们求和之前,我们应该将它们转换为数字。

有几种方法可以做到这一点。上述公式使用值函数,但我们也可以使用+0*1等方法。

票数 1
EN

Stack Overflow用户

发布于 2018-10-26 09:56:29

如果你去掉公式的RIGHT部分,你会看到结果实际上是0,0,0,0,0,0,RBI-1,RBI-4。此外,REGEXEXTRACT还返回一个文本。我们需要将结果转化为数字。将VALUE添加到公式中将为我们做到这一点。

代码语言:javascript
复制
=ARRAYFORMULA(IFERROR(VALUE(REGEXEXTRACT(REGEXEXTRACT(A1:H1,"RBI-[0-9]+"),"[0-9]+")),0))

如果您只想要不带零的结果,只需将其全部包装在SUM中即可。

代码语言:javascript
复制
=SUM(ARRAYFORMULA(IFERROR(VALUE(REGEXEXTRACT(REGEXEXTRACT(A1:H1,"RBI-[0-9]+"),"[0-9]+")),0)))

我相信有一种更有说服力的方法可以做到这一点,但它是有效的。

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

https://stackoverflow.com/questions/52999744

复制
相关文章

相似问题

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