Excel公式与函数非常强大,往往能够实现你认为不可能的需求。例如下图1所示的例子,我只想求单元格区域B5:F9中对角线单元格中的数值之和。
图1
也就是:
B5+C6+D7+E8+F9=10+20+30+40+50=150
可以使用数组公式:
=SUM(B5:F9*(ROW(B5:F9)=COLUMN(B5:F9)+3))
结果如下图2所示。
图2
这个公式很简洁但有点特别,其特别之处是后面的+3。为什么呢?因为我们要求的是对角线上的单元格数值之和,对于矩阵来说,对角线上的行列号相等,在本例中,行号从第5行开始至第9行,列号从第2列开始至第6列,相差3,所以将列号+3,使行列号相等,从而能够获取相应的数值。
公式中,
B5:F9
将解析为一个5行5列的矩阵:
{10,0,0,0,0;
0,20,0,0,0;
0,0,30,0,0;
0,0,0,40,0;
0,0,0,0,50
}
而ROW(B5:F9)将解析为列矩阵:
{5;6;7;8;9}
COLUMN(B5:F9)+3
解析为行矩阵:
{2,3,4,5,6}+3
即:
{5,6,7,8,9}
对于
{5;6;7;8;9}={5,6,7,8,9}
解析为:
{TRUE,FALSE,FALSE,FALSE,FALSE;
FALSE,TRUE,FALSE,FALSE,FALSE;
FALSE,FALSE,TRUE,FALSE,FALSE;
FALSE,FALSE,FALSE,TRUE,FALSE;
FALSE,FALSE,FALSE,FALSE,TRUE
}
上述两个矩阵相乘,得到:
{10, 0,0,0,0;
0,20,0,0,0;
0,0,30,0,0;
0,0,0,40,0;
0,0,0,0,50
}
传递给SUM函数,得到结果:
150
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有