编程技术分享平台

网站首页 > 技术教程 正文

巧用逻辑值,为SUMPRODUCT赋能,提高生产力!

xnh888 2024-11-21 23:03:28 技术教程 36 ℃ 0 评论

逻辑值,这个神奇的二态值,用好了简直就是神辅助!

什么是逻辑值?

简单来说逻辑值就是true和false。只有这两个值。

这两个值代表着一切有两面性的事物:例如白天黑夜;阴阳;男女等等。

这俩货在计算机学科中还有一个名字,叫布尔值。它们在电脑的底层逻辑中通常是代表着1和0。

实际运用中,这俩货与数字之间的转关系是:

1、逻辑值转数字:true转换成数字都是1;false转换成数字都是0;

2、数字转逻辑值:0转换成逻辑值是false;而所有非0值转换成逻辑值才是true。

请注意:“所有非0值”圈起来,要考!

这就是逻辑值的魅力所在!

我们再来说一下sumProduct这个函数。

SUMPRODUCT函数。

单看这个函数的功能很简单:就是用来计算乘积之和的。既然需要逻辑值来打辅助,那肯定不是常规用法。

先简单看一眼这个函数的语法:

SUMPRODUCT(array1,array2,array3, ...) 
Array1,array2,array3, ... 为 2 到 30 个数组,其相应元素需要进行相乘并求和。 

实际这个函数运行时的流程如下图:

超能力的底层逻辑

那么上面这看似平淡无奇的乘积求和,拥有超能力的底层逻辑何在呢?

1、0乘任何数结果为0:我们知道0参与的乘法结果都是0。

2、逻辑值与数值互转:false是被转化为0,true是被转化为1。

当我们让SumProduct函数的任何一个数组变成为逻辑值数组的时候就可以实现我们的超能力了。

如下图:

E2:E15*1:目的就是让E列的逻辑值转换为数字0和1。我们可以看看转化后的结果:

这就是逻辑值赋予SumProduct超能力的底层逻辑。

有哪些超能力?

1、实现条件乘积求和,比如求各月的销售额。

图中公式:

=SUMPRODUCT((($A$3:$A$14)=I3)*1,$C$3:$C$14,$D$3:$D$14)

这其中的第一列月份与做销售额月份统计表中的月份对比,产生逻辑值,再与1相乘,强行将逻辑值转换成数字,true转换为1,false转换为0。

上面是单条件,也可以实现多条件。


2、多条件乘积求和

上面示例的多条件求乘积和的公式:

=SUMPRODUCT((($B$3:$B$14)=$F9)*1,(($A$3:$A$14)=G$8)*1,$C$3:$C$14,$D$3:$D$14)

上面的这两个条件是分成两列写了,当分成两列或者多列来写条件的时候,就是要求所有条件都必须满足才能得到我们想要的结果。

我们还可以写成这样的。

=SUMPRODUCT((($B$3:$B$14=$F9)*($A$3:$A$14=G$8)),$C$3:$C$14,$D$3:$D$14)

如果写成上面这样的就可以实现多个条件成立其一就可以乘积求和的形式了。这不在今天讨论的范围之内了


3、剑走偏锋,实现条件计数功能。类似于countif函数。

上面是单条件,还有多条件,类似于countifs函数

这下好了,直接让countif、count、counta、countifs全都下岗了。

4、统计数组中有多少个错误值。

图中公式:

=SUMPRODUCT(NOT(ISERROR(D2:G11))*1)

公式讲解:

1、我们先用iserror函数对D2:G11区域内的值进行判断,它返回的就是逻辑值。如果是错误值,则返回true。

2、为了能求出非错值的个数,所以要在iserror函数前面再加上not函数,将之取反:即将原来的true变false,将原来的false变成true。然后再乘以1,将逻辑值转换为数值。再求和即实现了非错统计。

最后,逻辑值的妙用远不如这些,它与其他函数相结合,也能碰出“爱情”的火花,产生意想不到的结果。这就需要我们平时多练习,多摸索函数的新玩法。

大家快来练习练习吧。

日拱一卒,功不唐捐。关注我,持续进步。

#头条创作挑战赛#

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表