天啊!这么多费用,怎么求和?

你好,我是刘卓。欢迎来到我的公号,excel函数解析。好久未更新了……,最近有点忙,没有那么多时间精力。私信向我提问的小伙伴,在这里先向你们说声抱歉,因为我没那么多时间一一给你们回复和解答(付费例外)。

不过,我会从提问中筛选一些问题,在公号中不定期更新。想免费提问的小伙伴,建议加微信群。群里各层次水平的人都有,大家可以一起交流学习。

下面来回答一位小伙伴的提问:“如何对每个人的费用求和?”。表格如下,记录的是每个人各项体检的费用,各项费用是用乘法的算式记录的。最后的结果如H列所示。

对于这个(每个)问题可以有多种方法,下面分别来说下。

-01-

WPS

如果用WPS来完成这个问题,会很简单。只需在H2单元格输入公式:=EVALUATE(TEXTJOIN("+",1,B2:G2)),然后下拉填充就可以了。

首先,用textjoin将每个人的各项费用用加号“+”连接起来,组成一个乘法和加法的算式;然后用evaluate计算出这个算式的结果就可以了。


-02-

EVALUATE+T+IF

如果你用的是微软的EXCEL,也可以用上面的方法,只不过evaluate需要定义名称。

我们现在换一种方法,让evaluate可以同时计算多个算式。一般来说,evaluate只能计算一个算式,但是加上t(if({1},))就可以同时计算多个算式了。

首先,选中H2单元格,然后定义一个名称sumje,最后在引用位置输入公式:=EVALUATE(T(IF({1},Sheet1!$B2:$G2&"")))。这样名称就定义好了。
接下来,在H2单元格输入公式:=SUM(sumje),下拉填充,即可得到结果。


-03-
IMREAL+IMAGINARY

前两种方法都是用evaluate计算算式,下面我们换个思路,将每行算式中乘号前面的数字提取出来,形成一个数组;乘号后面的数字提取出来,再形成一个数组,最后让这两个数组对应相乘再相加。

因为每个算式都只有2个数相乘,所以我们可以用复数函数来提取数字。复数形如a+bi,a是实部系数,b是虚部系数。

在H2单元格输入公式:=SUMPRODUCT(IMREAL(SUBSTITUTE(B2:G2&"j","*","+"))*IMAGINARY(SUBSTITUTE(B2:G2&"j","*","+"))),下拉填充,完成。

这个公式看起来很长,实际很简单。SUBSTITUTE(B2:G2&"j","*","+")这段用了两次,为了得到复数a+bi的形式。先在尾巴连接个“j”,再将“*”替换为“+”。最后返回的结果为{"62+5j","25+2j","1+10j","4+5j","64+2j","9+10j"}。

IMREAL(SUBSTITUTE(B2:G2&"j","*","+"))这段提取实部系数,也就是加号前面的数字,结果为{62,25,1,4,64,9}。

相应地,IMAGINARY(SUBSTITUTE(B2:G2&"j","*","+"))这段提取虚部系数,也就是加号后面的数字,结果为{5,2,10,5,2,10}。

最后用SUMPRODUCT对这两个数组对应相乘再相加。

PS:还有稍微复杂一点的第4种方法,对二维数组每一列的两个数字相乘。
文件链接:

https://pan.baidu.com/s/1nx1RO89lJAn2bcRneoxOCg

提取码:2s93
(0)

相关推荐