总结篇--斜线求和问题

点击上方

蓝色

文字  关注我们吧!

送人玫瑰,手有余香,请将文章分享给更多朋友

动手操作是熟练掌握EXCEL的最快捷途径!

小伙伴们啊,在EXCEL中大家经常会遇到行或列的求和问题。可是,大家遇到过斜线求和问题吗?今天就和大家来聊一聊斜线求和。

什么是斜线求和?如下图,简单说,就是按照下面相同的颜色的单元格求和。这里标示出颜色仅仅是方便大家对斜线的理解而已。

01

基础篇方法一

只要我们理解了多维和R1C1的引用方法,对下面这个方法就很好理解了。

在单元格I1中输入“=SUM(N(INDIRECT("r"&1+(ROW(1:6)-1)&"c"&ROW($1:$6),)))”并向下拖曳即可。

思路:

  • R1C1引用,R表示行,C表示列

  • "r"&1+(ROW(1:6)-1部分表示从第一行开始,分别向下移动1到5行,构建了一个内存数组

  • 同理,"c"&ROW($1:$6)部分构建了一个列的内存数组

  • "r"&1+(ROW(1:6)-1)&"c"&ROW($1:$6)得到的结果就是{"r1c1";"r2c2";"r3c3";"r4c4";"r5c5";"r6c6"}这样一个内存数组

  • 利用INDIRECT函数取得对应的数值

  • 利用N函数降维处理

  • SUM函数求和

请注意,公式中的ROW(1:6)和ROW($1:$6)这两部分的奇妙应用!

02

基础篇方法二

这个方法仅仅是依靠数学逻辑来完成的。

在单元格I1中输入“=SUM(((ROW($A$1:$F$6)-COLUMN(A:F)+1)=ROW(A1))*$A$1:$F$6)”,三键回车并向下拖曳即可。

思路:

  • 简单说,就是让行标减去列标后等于需要求和的单元格所在的行标就可以了

  • 利用SUM函数求和

03

基础篇方法三

这个方法也用到了多维引用。

在单元格I1中输入“=SUM(N(INDIRECT(TEXT(RIGHT(SMALL(IF($A$1:$F$6<>"",ROW(A1:F6)/1%+COLUMN(A:F)*10001),{1,7,12,16,19,21}),4),"r0c00"),)))”,三键回车并向下拖曳即可。

思路:

  • IF函数部分,对不为空的单元格,使其行号扩大100倍,列号扩大10001倍,然后两部分相加

  • 利用SMALL函数依次提取第1小,第7小,第12小,第16小,第19小,第21小的数值,这些恰好就是需要求和的单元格的位置

  • 利用RIGHT函数提取4位字符

  • 利用TEXT函数将其转换为R1C1的格式

  • 在利用SUM函数,N函数和INDIRECT函数求得总和

04

基础篇方法四

下面我们将斜线稍微做一些变化。请看下图。

在单元格A8中输入“=SUM(N(INDIRECT("r"&6-(ROW($1:$6)-1)&"c"&ROW(1:6),)))”,三键回车并向下拖曳即可。

思路:

  • 和前面的相似。请注意ROW($1:$6)和ROW(1:6)的变化

05

进阶篇方法一

我们在提高一些难度。下图中求黄色部分的总和。下面这个我们可以利用SUMIF错位法,LOOKUP方法,以及上面我们介绍的那些方法,都可以解决,这里就不再一一介绍了。

在单元格G2中输入“=SUM(N(INDIRECT(ADDRESS(MMULT({1,1,1,1,1,1,1,1},IFERROR($B$3:$E$10/$B$3:$E$10,0))+2,COLUMN(B:E)))))”,三键回车即可。

思路:

  • 利用MMULT函数求出单元格区域B3:E10每列中非空数值的个数,再加上2后实际就是每列最后一个数值的行标

  • 利用ADDRESS函数求得每个数值的单元格地址

  • 利用SUM函数,N函数和INDIRECT函数求和

06

进阶篇方法二

其实上面这个题还可以用基础篇方法三中使用的方法来解决。

在单元格G2中输入“=SUM(N(INDIRECT(TEXT(RIGHT(SMALL(IF(B3:E10<>"",ROW(3:10)/1%+COLUMN(B:E)*10001),SUBTOTAL(3,OFFSET(B3:B10,,,,{1,2,3,4}))),4),"r0c00"),)))”,三键回车即可。

思路:

  • 其实思路都是一样的。只不过将{1,7,12,16,19,21}换成了SUBTOTAL(3,OFFSET(B3:B10,,,,{1,2,3,4}))),小伙伴们,你们理解这其中的含义了吗?

07

进阶篇方法三

下面我们再提高一些难度。下图中有一些单元格是空值,这样有些上面提到过的方法就不能使用了。

在单元格G2中输入“=SUM(N(INDIRECT(ADDRESS(MMULT({1,1,1,1,1,1,1,1},IFERROR($B$3:$E$10/$B$3:$E$10,0))+{2,4,6,7},COLUMN(B:E)))))”,三键回车即可。

思路:

  • 和前面的思路相同。只不过这里吧+2变成了+{2,4,6,7},朋友们,你们理解了吗?

-END-

长按下方二维码关注EXCEL应用之家

面对EXCEL操作问题时不再迷茫无助

推荐阅读:

IF函数七兄弟,个个本领大!

一对多查询经典函数组合拓展应用--多对多查询

来,平均一下!

总结篇--反向查找函数使用终极帖

遇到不规范的数据录入,你该怎么办?

戳原文,更有料!免费模板文档!

(0)

相关推荐