EXCEL系列03-函数实现高级查询筛选二
今天我为大家讲解下如何利用函数实现高级查询筛选二(有同步视频课大家可以查看),之前课程给大家讲过,主要利用查询函数VLOOKUP和逻辑函数IF实现查询筛选功能,由于用到的函数比较少,自然逻辑上有些复杂,很多网友表示功能很强大,查询效果也很好,看了好几遍还是看不懂,接下来我把逻辑搞简单一些,多用一些函数来实现查询筛选功能,效果与之前一模一样,我就不再展示了。
二、函数公式讲解一
第一步:如图所示,表1输入查询项“总监后”,表2先用合并符号“&“将员工号、姓名、部门、岗位、电话、身份证号、是否在岗信息进行合并显示在K列,再用函数公式“=IF(COUNTIF(K8,"*"&Sheet1!$A$2&"*")>0,"1","")”将K列数据与表1中A2数据进行比较,如果K列数据包含Sheet1!$A$2,即本例中“总监”字符,则返回1否则返回空。表2中主要用到的函数COUNTIF主要就是条件统计的意思,即统计满足条件的数据数量。
第二步:如图所示,表1中,先通过函数=Sheet2!A8,将表2中A列数据搬运到表1中K列,再通过函数=IF($K8<>"",Sheet2!D8,""),将符合要求的数据显示出来,即K列(相当于表2中的A列)不为空,则等于表2中相应单元格数据,否则等于空。通过筛选,我们可以看到,符合要求的数据全部显示出来,但是中间都有空白单元格,接下来通过函数=IFERROR(INDEX(P$2:P$30,SMALL($L$2:$L$30,ROW(F1))),""),将空白单元格去除掉。函数IFERROR之前讲过,简单讲就是不显示错误符号的意思,ROW(F1)等于单元格F1的行值,即1,则SMALL($L$2:$L$30,ROW(F1))相当于SMALL($L$2:$L$30,1),SMALL就是在某一列中取第几小的数的意思,SMALL($L$2:$L$30,1)相当于在L列取第一小的数,那自然是7,则INDEX(P$2:P$30,SMALL($L$2:$L$30,ROW(F1)))就相当于INDEX(P$2:P$30,7),INDEX是在某一列取第几行数值的意思,则INDEX(P$2:P$30,7)相当于从P列P2单元格开始向下偏移7次,即取P8单元格数值。随着公式的填充,依次会选取第2小的数14,并取这一行的单元格数值,以此类推,就可以实现我们的数据筛选。
三、函数公式讲解二
如上图,利用组合公式=INDEX(M:M,SMALL(IF(M$2:M$100<>"",ROW(M$2:M$100),4^8),ROW(M1)))&""也可以实现查询筛选功能,其他的和上面讲述都是一模一样的,唯一的区别就是这个组合函数=INDEX(M:M,SMALL(IF(M$2:M$100<>"",ROW(M$2:M$100),4^8),ROW(M1)))&""和表1中函数=IFERROR(INDEX(P$2:P$30,SMALL($L$2:$L$30,ROW(F1))),"")的区别了,组合函数输入后,需要同时按下组合键Ctrl+Shift+Enter,其执行原理和函数解读类似于=IFERROR(INDEX(P$2:P$30,SMALL($L$2:$L$30,ROW(F1))),""),这里我们就不再赘述了。
总结:还是之前说过的,实现查询筛选功能的函数很多,思路也很多,希望大家能够多学习多思考多实践,我后期还会教给大家一些基本的计算机汇编语言,数据库操作等等,例如利用今天的筛选功能可以对后面我们讲解的数据库透视表进行数据加工筛选,还可以利用编程语言实现更高级的数据处及文件理,未来随着我们课程的深入,大家学会了基础汇编语言,像今天我讲解的这个查询筛选功能会很容易实现,可能就是简单的几行代码而已,千里之行始于足下!今天就为大家讲解到这里,希望能与大家一起学习成长!