我们有这样一个案例,按照不同的销售额进行等级评价。
例如销售额在小于5000的情况下,评级等级自动输出为“差”;销售额在大于或等于5000小于或等于10000的情况下,评级等级自动输出为“中”;销售额在大于10000的情况下,评级等级自动输出为“优”。
我们解决这样的问题,一般使用的是多层IF函数嵌套条件判断:
=IF(A2<5000,"差",IF(A2<=10000,"中",IF(A2>10000,"优")))
我们看到分三层:
第一层IF,如果A2<5000时,返回"差";第二层IF,如果A2<=10000,返回"中";第三层IF,如果A2>10000,返回"优"。
像上面那样输入多层IF函数嵌套条件判断的话,有这样一个弊端,就是不同区域要想再次输入这样规则要求的IF函数时,需要重复录入(或复制粘贴并修改参数),本来IF函数条件如果多的话,公式就会很长,重复录入无形之中浪费了我们大量的时间。
比如F列我们又要重复输入一次相同规则要求的IF函数:
=IF(E2<5000,"差",IF(E2<=10000,"中",IF(E2>10000,"优")))
比如J列我们又要重复输入一次相同规则要求的IF函数:
=IF(I2<5000,"差",IF(I2<=10000,"中",IF(I2>10000,"优")))
.......
以此类推,有多少个区域,我们就要重复IF多层嵌套函数N次。
那么我们能不能像下面这样输入相同的简短的公式:
=评级
都会生成如同IF函数那样的相同的多层嵌套条件判断。
答案当然是可以的。
在Excel中LAMBDA函数是一个自定义高级函数,允许小伙伴们根据自己的需要创建一个特定的函数并重复使用,而无需编写复杂的嵌套公式或VBA代码,可以将复杂的计算逻辑封装成一个自定义函数,简化公式的编写和维护。LAMBDA函数不仅可以编写属于我们的自定义函数,还能在函数中调用自身,也就是大家常说的递归。这个函数在Excel365版本和当前的WPS最高版本中均可用。
函数基础结构:
=LAMBDA(参数, 计算)
参数:要传递给函数的值,例如单元格引用、字符串或数字。最多可以输入 253 个参数。此参数可选。
计算:要作为函数结果执行并返回的公式。其必须为最后一个参数,且必须返回结果。此参数是必需项。
以上公式仅仅是定义了参数和计算,2个参数并没有实际的值,所以输入到单元格中并不会返回具体的结果。
假设我们对两个参数进行赋值:X=1,Y=3,这里的(1,3)依次传递给X和Y,然后用它们执行计算1+3,返回结果4。(基本原理的理解)
我们打开[公式-名称管理器-新建名称]
在[新建名称]对话框中,输入自定义名称:评级
范围可以默认:工作簿或工作表(表示作用范围)
引用位置输入:
=LAMBDA(x,IF(x<5000,"差",IF(x<=10000,"中",IF(x>10000,"优"))))
即我们用LAMBDA自定义一个变量:销售变量x。然后让这个销售变量x执行我们上面步骤中IF多层嵌套函数的规则要求。
规则要求:
销售额在小于5000的情况下,评级等级自动输出为“差”;销售额在大于或等于5000小于或等于10000的情况下,评级等级自动输出为“中”;销售额在大于10000的情况下,评级等级自动输出为“优”。
那么这样我们以后就可以通过这个自定义的名称“评级”,来作为一个函数,实现IF函数的效果了。
LAMBDA优势:
简化复杂公式:将多层嵌套的IF函数封装成单一函数。
提高可读性:通过命名函数(如“评级”)替代冗长公式。
便于维护:修改函数定义即可全局更新所有调用位置。