今天的案例,主要是为了教大家关于奇偶数判断的两个新函数 iseven 和 isodd。
这两个函数大多数人可能挺陌生的,其实它们的语法特简单,学习掌握一下,有些场景中还是会有点睛之笔的。
案例:
下图 1 为部门每位销售的业绩目标和实际达成情况,请在最下方分别计算出 KPI 和实际的总数。
效果如下图 2 所示。
解决方案:
1. 在 C28 单元格中输入以下公式:
=SUMPRODUCT(ISEVEN(ROW(2:27))*C2:C27)
公式释义:
- ROW(2:27):提取 2 到 27 行的行号,结果为 2 到 27 的一组数字 {2;3;4;…;27};
- ISEVEN(…):iseven 函数的作用是判断上述数组中的数字是否为偶数,生成一组结果为 true 和 false 的数组;
- SUMPRODUCT(…*C2:C27):
- 对上述数组和 C2:C27 区域的数值进行乘积求和;
- 只有第一个数组中为 true 的值与 C 列数值相乘才保留原结果,false 相乘为 0;
- 最后对乘积结果求和,也就是将所有偶数列的值相加
细心的读者可能已经发现了,今天的公式中用到了一个新函数 iseven,那我先给大家讲解一下这个函数。
ISEVEN 函数说明:
作用:
- 如果参数 number 为偶数,返回 TRUE,否则返回 FALSE。
语法:
- ISEVEN(number)
参数:
- Number:必需, 要测试的值。如果 number 不是整数,将被截尾取整。
说明:
- 如果 number 不是数字类型,则 ISEVEN 返回 #VALUE! 错误值。
既然有 iseven,那么当然也有对应的 isodd 函数。
与 iseven 相对,isodd 的作用是判断参数是否为奇数,如果是则返回 true,不是则返回 false。
2. 在 C29 单元格中输入以下公式:
=SUMPRODUCT(ISODD(ROW(2:27))*C2:C27)
公式释义:
- 将 C2:C27 中行值为奇数的所有单元格的值相加
上述公式如果不用 iseven 和 isodd 函数,直接用 sumproduct 当然也是可以的。
3. 在 C28 单元格中输入以下公式 –> 下拉复制公式:
=SUMPRODUCT(($B$2:$B$27=B2)*$C$2:$C$27)
公式释义:
- $B$2:$B$27=B2:判断 B2 至 B27 区域的值是否等于 B2 单元格的值,生成 true 或 false 组成的数组;
- SUMPRODUCT(…*$C$2:$C$27):用上述数组中的值分别与 C 列数字相乘再求和,即可计算出所有类型为 KPI 的总和
* 请注意:B 和 C 列的两个区域要绝对引用,而 B2 单元格需要相对引用。
有关 sumproduct 函数的详解,请参阅 Excel函数(四) – sumproduct函数计数、排名、求和等等。