达永编程网

程序员技术分享与交流平台

Excel计算每一列最后一行的所有数字之和

大家好,今天来和大家分享一个题目的几种不同函数方法求解——计算每一列最后一行的所有数字之和;这是一个群友提出的,应该和她的实际问题有关,这里我们模拟一点数据试试。

废话不多说,来看看题目和计算结果:

题目出来了,聪明的你,有好的汉顺解答方法吗,不妨一试!

也许你也猜到了,我这里给出了6种函数解法,第一种和最后一种是我自己研究的,中间四种是群友给出的,这里就不一一感谢了,集体敬礼,感谢四位群友大神。

方法一(map):

=LET(a,A2:.E9,r,BYCOL(a,COUNTA),c,SEQUENCE(,COLUMNS(a)),SUM(MAP(r,c,LAMBDA(x,y,INDEX(a,x,y)))))

首先计算数据区域A2:E9每一列的数据个数,这里没有特殊格式单元格,大家可以考虑中间有空格,或者文本型数据的情况;接着计算列数并生成一个横向数组(列方向显示),最后就是利用map函数取出每一个需要的数值求和;这种思路比较好理解,但是公式不是最短的。

方法二(第一个sumif):

=SUMIF(A2:E9,"",A1)

直接利用sumif条件求和计算,这里涉及sumif函数的相对位移原理,这是第二个sumif函数的精简版,也是6种方法中最短的,不知道大家理解没有,我是有点晕乎乎的。

方法三(lookup):

=SUM(BYCOL(A1:E9,LAMBDA(y,LOOKUP(9E+307,y,y))))

第一步查询出每一列的最后一个数据,第二步就是求和啦,说起来很简单,但是不好理解啊,这里涉及lookup的模糊查找,慢慢消化吧,我也不是很懂,毕竟是小白自学嘛。

方法四(trimrange):

=SUM(BYCOL(A2:E9,LAMBDA(x,TAKE(TRIMRANGE(x),-1))))

这里利用bycol和take函数提取每一列,并利用trimrange函数裁剪,最终得到我们需要的每一列的最后一个数据,最后就是前面加上sum求和,搞定,思路决定出路,你想到了吗?

方法五(第二个sumif):

=SUMIF(A2:E9,"",A1:E8)

公式还是很简单,相比方法二,你会发现就是多了一点点——“:E8",其实都可以省略啦,相对位移原理嘛,由最左上角那个单元格和条件单元格区域大小确定求和区域范围的啦。

方法六(lambda):

=LET(a,A2:.E9,f,LAMBDA(ary,x,SUM(--INDEX(ary,x,SEQUENCE(,COLUMNS(ary))))),b,BYCOL(a,COUNTA),f(a,b))

这里通过自定义函数实现提取并求和,但是得注意提取后的数据必须转化为数值才能正确求和,这个你肯定懂的啦,我只是提醒一下下。

好啦,六种方法给出来了,你也来试试吧,看到这里的你也手痒痒了吧,加油;谢谢大家的阅读。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言