各位小伙伴们大家好,上期给大家讲解了and函数和or函数的综合应用,本期就来说一下他们的另一种表达方式,乘法运算和加法运算的综合应用。我们还是通过案例来给大家讲解,这样便于思路分析。
案例要求,基于以下数据源,如果员工有一样产品大于90为考核通过,否则考核不通过,求各部门考核通过的人数。如下图所示:
我们分析这个案例要求,其实就是在往期or函数案例上加了一个部门的条件,但是加上之后直接用or函数就难以实现了。我们思路还是将符合要求的标记为1,不符合要求的标记为0,最后相加得到个数。清楚思路后,我们一步步来实现。
第一步:我们需要判断是否有一样及以上的产品大于90,这里与前面讲解的or函数与加法运算的关系写法一样,不再赘述,我们直接给出判断=(d77>90) (e77>90) (f77>90)
第二步:判断部门。由于我们采用加法运算,已经进行了一次数学运算,所以得到的结果为数字,这些数字分别表示有几个产品大于90。如果是只需要判断是否通过,那到这一步用if函数做一下判断就知道谁通过谁不通过了,但是本期还增加了第二个条件,要区分部门,并统计人数,显然下一步我们要先区分部门,这里我们以部门甲为示例,判断是否为部门甲。
第三步:判断两个条件是否通时成立。判断完两个条件后,我们这两个条件要同时成立才纳入计数,既然是同时成立,满足and函数与乘法的关系,这里直接用乘法将两个条件相乘,得到相应的结果。
第四步:将上一步结果化为0和1。到这第三步,就将数字划分为0和非0的数值了,但是这时候直接将辅助列相加的话,得到的结果显然是不对的,比如第三条得到的是数字二,代表这个员工有两种产品大于90,直接相加就会出现错误,因此我们要想办法把大于1的数字转换成1,0依旧不变。如何转换呢,这里介绍一个函数,简单说一下用法,后期再详细讲解。roundup函数,将数字向上舍入,比如1.2,使用这个函数且仅保留整数部分的情况下,结果为2,大家可以理解为将小数部分去掉后加1。知道这个函数后在这里该怎么使用,我们可以用最后一步所有的数字统一除以一个这里面可能出现的最大的数字,我们这里可能出现的最大的数字为当三个产品都大于90的情况下,得到数字为3。因此我们可以先全部除以三看看结果:
我们可以看到,经过除以3之后,0还是0,但是非0的数字都变成了小数,通过上面讲的roundup函数,去除小数部分在整数部分加1,是不是就将所有小数变成1了,我们来看看效果:
到了这一步,最后就是将这些1和0加起来即可,我们这里就不给大家赘述。同时到这里我们思路就已经理清楚了,最后就是使用上期给大家讲解的方法将这些分部进行的步骤综合到一条公式当中,最终就得到了=sum(roundup((($d$77:$d$89>90) ($e$77:$e$89>90) ($f$77:$f$89>90))*($c$77:$c$89=m78)/3,0))
如果单看最后一条公式的话,你会觉得很复杂,但是如果从头到尾看下来,理清楚了思路后,是不是就豁然开朗,所以大家一定学会这种分步分析方法,以后再遇到复杂嵌套函数的,就可以依葫芦画瓢,熟悉之后,这些辅助列就只存在与你的心中了。孰能生巧,其实大家心中的高手,都是这么来练成的!