天啊!这么多费用,怎么求和?
你好,我是刘卓。欢迎来到我的公号,excel函数解析。好久未更新了……,最近有点忙,没有那么多时间精力。私信向我提问的小伙伴,在这里先向你们说声抱歉,因为我没那么多时间一一给你们回复和解答(付费例外)。
不过,我会从提问中筛选一些问题,在公号中不定期更新。想免费提问的小伙伴,建议加微信群。群里各层次水平的人都有,大家可以一起交流学习。
下面来回答一位小伙伴的提问:“如何对每个人的费用求和?”。表格如下,记录的是每个人各项体检的费用,各项费用是用乘法的算式记录的。最后的结果如H列所示。
对于这个(每个)问题可以有多种方法,下面分别来说下。
WPS
首先,用textjoin将每个人的各项费用用加号“+”连接起来,组成一个乘法和加法的算式;然后用evaluate计算出这个算式的结果就可以了。
EVALUATE+T+IF
如果你用的是微软的EXCEL,也可以用上面的方法,只不过evaluate需要定义名称。
我们现在换一种方法,让evaluate可以同时计算多个算式。一般来说,evaluate只能计算一个算式,但是加上t(if({1},))就可以同时计算多个算式了。
前两种方法都是用evaluate计算算式,下面我们换个思路,将每行算式中乘号前面的数字提取出来,形成一个数组;乘号后面的数字提取出来,再形成一个数组,最后让这两个数组对应相乘再相加。
在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对这两个数组对应相乘再相加。
https://pan.baidu.com/s/1nx1RO89lJAn2bcRneoxOCg