前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >问与答117:如何求出字符串中出现的所有数字之和?

问与答117:如何求出字符串中出现的所有数字之和?

作者头像
fanjy
发布2021-05-07 10:37:39
6570
发布2021-05-07 10:37:39
举报
文章被收录于专栏:完美Excel完美Excel

Q:如何使用公式返回文本字符串中所有数字之和?例如,对于文本字符串“I am 24years old and my Dad is 43”,应用公式后,结果为13,即2+4+4+3。

A:假设文本位于单元格A1中,在单元格B1中输入下面的公式:

=SUM((LEN(A1)-LEN(SUBSTITUTE(A1,{1,2,3,4,5,6,7,8,9},"")))*{1,2,3,4,5,6,7,8,9})

解析:

加法运算的有效数字是1到9,因此求和的算法是:

1 ×字符串中1的个数 +

2 × 字符串中2的个数 +

9 ×字符串中9的个数

= 结果

考虑使用SUBSTITUTE函数用空字符串替换所有出现的数字,例如4,SUBSTITUTE(Txt, 4,“”)返回没有4的文本(对于示例,返回“I am 2years old, and my Dad is 3”)。

考虑公式中的

SUBSTITUTE(A1, {1,2,3,4,5,6,7,8,9}, “”)

使用空字符串替换数字1至9,生成9个修改的字符串值数组,剔除了所有出现的相应的数字。

由于在字符串中数字4出现了2次,结果字符串比原字符串的长度少2,因此LEN(A1)-LEN(SUBSTITUTE(A1,4, “”)得到2。更进一步,公式中的:

LEN(A1)-LEN(SUBSTITUTE(A1,{1,2,3,4,5,6,7,8,9},""))

得到含有9个值的数组,代表每个数字在字符串中出现的次数。即{0,1,1,2,0,0,0,0,0},表示2和3都只出现了1次,4出现了2次,而其它的数字没有出现。这样,公式转换为:

=SUM({0,1,1,2,0,0,0,0,0}*{1,2,3,4,5,6,7,8,9})

两个数组对应元素相乘后求后,即:

=0×1+1×2+1×3+2×4+0×5+0×6+0×7+0×8+0×9

=13

可以使用SUMPRODUCT函数代替原公式中的SUM函数,此时公式为:

=SUMPRODUCT((LEN(A1)-LEN(SUBSTITUTE(A1,{1,2,3,4,5,6,7,8,9},""))),{1,2,3,4,5,6,7,8,9})

注:本文整理自mrexcel.com,供有兴趣的朋友学习参考。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档