一、单条件实现不重复统计
利用SUM函数数组公可以式统计不重复记录个数的应用,如在人员信息表中统计不重复人员数或部门数,又如针对某种品牌计算不重复的型号数量等。这里主要讨论利用数组公式针对单列或单行的一维数据进行不重复统计的用法。
例1多种方法统计不重复职称数量
如图1所示,展示了一份某企业人力资源提供的人员明细表,下面的公式将利用明细表统计出不重复的职称数量。
首先已经将员工职务区域定义为名称Jobs:
=人员明细表!$E$2:$E$10
由于数据表中可能存在某些员工没有职称,因此需要过滤掉空白单元格数据进行不重复统计,下面分别利用集中方法来处理。
(1)COUNTIF函数法
公式如下:
{=SUM((Jobs<>””)/COUNTIF(Jobs,Jobs&””))}
使用条件统计函数COUNTIF返回区域内每个职称名称出现次数的数组,被1除后再对得到的商求和。假设职称“测试经理”出现了n次,则每次都转为1/n,n个1/n求和得到1,因此统计结果将被计数为1,最终统计结果为5。
(2)COUNT函数法
若利用COUNT函数可以忽略空白单元格区域进行统计,如D2单元格公式如下:
{=COUNT(1/(MATCH(Jobs,Jobs,)=ROW(Jobs)-1))}
该公式主要使用常规的MATCH函数定位序号进行比较的方法来判断哪些职称是首次出现的记录,统计结果将会出现True、False和#N/A的结果,再利用1除以MATCH比较结果,将False结果转换为错误值,最后利用COUNT函数忽略错误值统计即得结果。
二、多条件统计应用
在实际工作中,很多时候用户会遇到从多条件数据中进行统计的问题,虽然在Excel
2010版本中提供了类似COUNTIFS、SUMIFS或者AVERAGEIFS的函数,但在某些特殊应用中仍然需要借助数组公式来协助处理。
例2统计培训讲授的授课课时
如图2所示,展示了一份某公司的内部培训明细表,在第3季度末人力资源部门将针对各位讲师的授课课时发放讲课费用,下面的公式将协助进行数据统计。
由于在本季度中有部分讲师承担了多门课程,因此在本示例中需要分别按部门和讲师姓名进行多条件统计,如在J2单元格统计数组公式如下:
{=SUM(($D$2:$D$12=$H2)*($E$2:$E$12=$I2)*$F$2:$F$12)}
该公式使用了标准的统计方法,主要利用了多条件比较判断的方式分别按部门和姓名进行过滤后,再进行讲授授课课时的统计。
当然,在这里完全可以使用SUMIFS函数来协助处理,如K2单元格公式如下:
=SUMIFS($F$2:$F$12,$D$2:$D$12,$H2,$E$2:$E$12,$I2)
另外,如果人力资源部门还想了解所有的培训明细中不重复讲师的数量,还可以利用COUNTIFS的多条件数组公式进行统计,如J10单元格公式如下:
{=SUM(1/COUNTIFS($D$2:$D$12,$D$2:$D$12, $E$2:$E$12, $E$2:$E$12,))}
该公式的统计原理与例1中COUNTIF函数解法类似,这里只是添加了多个条件进行统计而已,最终统计结果为7名讲师。
例3确定员工身份信息特定条件的人员数量
如图3所示,展示了一份人事情况表,下面将通过公式利用人员身份证号码统计出生在70年代目前已有职务的人员数量。
由于身份证号码中包含了员工的出生日期,因此只需要取得相关的出生年份就可以进行相关的判断和统计,如E11单元格统计公式如下:
{=SUM((MID(C2:C9,7,4)>=”1970”)*(MID(C2:C9,7,4)<”1980”)*(E2:E9<>””))}
或:
=SUMPRODUCT((MID(C2:C9,7,4)>=”1970”)*(MID(C2:C9,7,4)<”1980”)*(E2:E9<>””))
以上两个公式原理完全相同,都是通过借助MID函数分别取得员工的出生年份进行比较判断,再针对E列区域判断是否为空(非空则写明了职务名称),最后统计得出结果。
这两个公式的最大区别,在于SUMPRODUCT函数本身支持内部数组运算,因此直接使用普通公式即可得出结果。目前使用SUMPRODUCT函数替代SUM数组公式的解法比较常用,建议读者理解、掌握后再进行综合运用,相信在今后的工作中肯定能带来诸多便利。
三、条件查询及定位
产品在一个期间的销售数量情况是企业销售部门需要经常掌握的数据,以便于后续对市场行为进行综合分析和指定策略,利用Excel的查询函数可以简化对此类数据的查询操作。
例4确定商品销量最大的最近月份
如图4所示,展示了一份某商场下半年的各种饮品的销售情况,每种饮品的最旺销售月份各不相同,下面将通过公式查询各饮品的最佳销售月份。
L3单元格数组公式如下:
{=INDEX($A$1:$H$1,MAX(IF(OFFSET($C$1:$H$1,MATCH($L$2,$B$2:$B$11,),)=MAX(OFFSET($C$1:$H$1,MATCH($L$2,$B$2:$B$11,),)),COLUMN($C$1:$H$1))))}
该公式主要利用OFFSET函数结合MATCH函数的动态引用来定位被查询的饮品的销售量(数据行),通过MAX函数定位最大销售量的数据列,最后通过INDEX函数返回查询的具体月份。
网友评论