很多人遇到「多元条件」的总和计算时都会想的很复杂,但确实,Excel 的函数如果要达成多元条件成立才加总,大部份来说是不容易达成的,甚至要分好几个函数才能做到,不过其实在 Excel 中有一个非常实用的函数叫做 SUMPRODUCT,这是一个用来计算总和以及逻辑运算合体的函数,简单的说,当你需要满足条件 A、B、C 时才加总 D,那么就可以只用这一个函数来达成,前提是你要理解 SUMPRODUCT 的使用原理,往下就用个简单的范例来为大家说明。

SUMPRODUCT 函数实战运用基础

范例檔这里下载:请点我

跟大家先讲解一下今天想要达成的需求是什么,员工一共有四位,后面是休假记录,阿汤是随便打的,假设只要有休假就会在后面持续往下记录,累积休假天数的部份,我们希望的结果是,可以看到某个日期为止已经累积多少休假以及未休天数,比如说李大尾到 1/3 是休假 1 天,那么累积休假会是 1,到 1/5 时累积休假显示会是 2,但在 1/3 那栏的累积休假仍然要维持原本的 1,「也就是计算每天目前为止的结果」。

理解要做什么后,我们往下来实践。

先提供 G2 的公式如下:

=SUMPRODUCT(($E$2:E2=E2)*($F$2:F2))

我们只需要在 G2 跟 H2 完成公式,后面只要往下拉就可以搞定,那么来解说一下 G2 这个公式。

原则上今天是要讲 SUMPRODUCT 的运用,所以二个栏位我都只用 SUMPRODUCT 来做,SUMPRODUCT 最基本的理解方法就是,指定一个范围后如果给予条件,那么就是条件式,如果指定一个范围无其他条件那就是原始数值。

首先用 G2 来说明 SUMPRODUCT 的运作原理。

SUMPRODUCT 的每个括号里都会是一个加总计算或者是「条件」,第一个括号 ($E$2:E2=E2) 是指 E2 到 E2 之间等于 E2 栏位值的话就为 1(这个是条件式),而阿汤第一个 E2 加上了 $E$2 就是要让下拉时只变动后方的值,比如在 1/8 那栏,就会变成

=SUMPRODUCT(($E$2:E8=E8)*($F$2:F8))

这么一来就可以维持着计算到「目前日期」为止的栏位,我们来说明 G3 那一格的公式,拆解后更能理解 SUMPRODUCT 的做法:

=SUMPRODUCT(($E$2:E3=E3)*($F$2:F3))

如果把他拆解之后,会是 (E2 是否等于 E3) 乘于 (F2) + (E3 是否等于 E3) 乘于 (F3),所以得到结果 (0*1)+(1*1)=1。

不知道大家有理解 SUMPRODUCT 的用法了吗? 再举个例:

=SUMPRODUCT((E2:E3=E3)*(A2:A3>1)*(F2:F3))

(E2 是否等于 E3) 乘于(A2 是否大于 1)乘于 (F2) +(E3 是否等于 E3) 乘于(A3 是否大于 1)乘于 (F3),以此类推,可以加入各种条件式。




所以未休天数的累积很简单,公式如下:

=SUMPRODUCT(($A$2:$A$5=E2)*($B$2:$B$5))-G2

条件式就是将目前员工(E2)比对出 A2~A5 之间的员工后,再加总 B 栏的应休天数,但因为每个员工只有一栏应休天数,所以会很准确,最后再减掉 G 栏位已经累积的休假天数,就会得出目前为止为休天数了。

最后将 G 跟 H 的公式往下拖曳结束这回合。