条件公式,大部分人首先想到的就是用 if。虽然用 if 并没有错,但是如果只会用 if 就有点尬,特别是条件多的情况下,层层嵌套是很费脑子的。
我们应该培养自己的思维习惯:在使用公式的时候,尽量避免用 if,大多数情况下,完全有替代方法,而且更加言简意赅。
案例:给下图 1 的表加上指标,规则如下:
销售一部:15
销售二部:12
销售三部:10
销售四部:8
效果如下图 2 所示。
解决方案:如果用 if 嵌套,公式是这样的。
1. 选中 C2:C14 区域,输入以下公式 --> 按 Ctrl+Enter:
=IF(A2="销售一部",15,IF(A2="销售二部",12,IF(A2="销售三部",10,8)))
公式释义:
这个公式很生硬,就是通过 if 层层嵌套将条件写死,从而强行指定;如果是写代码的话,这是最不提倡的一种思路
这个公式完全可以变通一下,将所有 if 都拿走,变成下面这样的计算式。
2. 选中相关区域,输入以下公式 --> 按 Ctrl+Enter:
=(A2="销售一部")*15+(A2="销售二部")*12+(A2="销售三部")*10+(A2="销售四部")*8
公式释义:
(A2="销售一部")*15:判断 A2 单元格是否等于“销售一部”,结果为 1 或 0;将结果乘以 15,即部门匹配的保留指标值,不匹配的为 0;
后面每一段就是用 A2 与每个部门名称对比一遍,不符合条件的算式都会为 0,最后求和的值就是所属部门的指标值
3. 还可以用下面这个公式:
=SWITCH(A2,"销售一部",15,"销售二部",12,"销售三部",10,"销售四部",8)
公式释义:
switch 函数的语法为 SWITCH(表达式, 值1, 结果1, [值2, 结果2],…)
4. 哪怕用 ifs 也比 if 嵌套容易得多:
=IFS(A2="销售一部",15,A2="销售二部",12,A2="销售三部",10,A2="销售四部",8)
公式释义:
函数语法为 IFS(logical_test1, value_if_true1, [logical_test2, value_if_true2], [logical_test3, value_if_true3],…)
如果要分别提取出指标和实际值之间的大数和小数,是不是又想到了 if?虽然此处的公式很简单,但还是要养成好习惯,别用,因为有更简单的。
5. 选中 E2:E14 区域 --> 输入以下公式 --> 按 Ctrl+Enter:
=MAX(C2,D2)
公式释义:
提取出参数中最大的值;
也可以写成 =MAX(C2:D2)
6. 提取小的值,只要把函数改成 min 就可以了:
=MIN(C2,D2)