金山WPS

关注公众号 jb51net

关闭
软件教程 > 办公软件 > 金山WPS >

分享一个超神奇的公式! wps表格中对混合内容中的分数求和的技巧

脚本之家

粉丝求助SOS:如何对混合内容中的[分数]求和?

如下图所示:A2单元格中为混合内容。包括汉字,数字,标点(.),运算符(/除号)等。我们的目的很清晰,就是将混合内容中的分数:1/5(五分之一),1/5(五分之一),2/5(五分之二)提取出来然后求和,即1/5+1/5+2/5=4/5。

问题看似很简单,实则有一定的难度与忽略点。我们用到的是"="(等于号)+regexp++evaluate+sum公式组合解决这个问题。下面我们看看是如何起作用的。

第一步:正则提取分数

输入REGEXP正则表达式函数:

=REGEXP(A2,"\d+/\d+")

重点误区来了:

有的小伙伴会说,既然上一步已经将文本格式的分数全部提取到了:

{"1/5","1/5","2/5"}

我们只需要通过下面公式:

=SUM(REGEXP(A2,"\d+/\d+")*1)

正则表达式部分乘以1,将文本格式的分数数据转换为真正的数值,然后SUM函数求和不就行了。但是我们发现出现错误了。

1/5,1/5,2/5三个分数,被默认当做日期格式数据:5月1日,5月1日,5月2日 处理了,而日期格式数据的本质又是数值,所以直接乘以1后,变成了{45662,45662,45693},求和结果自然是错误的。

就算我们的分数与日期不相关,比如我们在B3单元格直接手动录入“15/26”。

理论上这个“分数”乘以1后,还会返回“分数”的本身:

=B3*1

但是我们发现出现了错误值。

说明在Excel或WPS表格中。分数格式的数据不能这样手动录入。

Excel或WPS表格中,真分数应该是这样录入的:

输入“0+空格+分数”输入真分数。

比如要输入真分数“15/26”,在单元格中输入“0 15/26”,回车后单元格会显示“15/26”,编辑栏显示0.576923076923077,可参与运算。

如果输入带分数,如1又1/2,则在单元格中输入“1 1/2”,回车后单元格显示“1 1/2”,编辑栏显示1.5,可参与运算。

所以我们用上述规则正确输入分数后,乘以1

=B4*1

会返回原分数,说明正确,可参与运算。

使用分数运算公式可输入分数:

如果要进行分数的加减乘除运算,可以使用相应的公式。例如,要计算15/26+1/26,在单元格中输入“=15/26+1/26”,回车后会得到结果:0.615384615384615,即8/13。

所以我们可以运用这个特性规则,进行下一步的公式设置。

第二步:分数运算公式化

我们输入下面公式:

="="&REGEXP(A2,"\d+/\d+")

用等于号与上一步REGEXP函数的返回结果连接合并。形成公式。比如之前的“1/5”变成“=1/5”,即 =1÷5 的运算公式。

第三步:文本公式计算

外面嵌套EVALUATE函数:

=EVALUATE("="&REGEXP(A2,"\d+/\d+"))

将上一步的{"=1/5","=1/5","=2/5"}三个文本算式分别计算求值得到:0.2,0.2,0.4

第四步:简单求和

最外面嵌套SUM求和函数:

=SUM(EVALUATE("="&REGEXP(A2,"\d+/\d+")))

将上一步的0.2,0.2,0.4相加得到0.8。

如果不想结果显示为小数格式,可以设置单元格格式为分数格式。

推荐阅读:regexp+sum这个厉害的求和公式请收藏