巧用IF,INDEX函数筛选出需要的数据
我们知道Excel 的数据筛选功能非常强大,可以筛选出我们需要的数据,筛选出的数据也可以复 制到其它工作表中,具体方法见我豆丁文档《【Excel 实例】图解将 Excel 筛选的数据复制出去》。今 天要讲的不是用系统自带的筛选功能,而是用函数来实现。这里要用到两个函数,IF 函数与 INDEX 函数。 现举一个简单的实例来演示。本实例假定学生参加兴趣小组的报名表,现在要将其中即参加了美 术,又参加的书法兴趣小组的学生名单筛选出来。 一、准备两个表。如下图所示: 表一,报名表(原始表) 表二,要生成的新表 二、函数使用分析: 1、要将同时报美术与书法的同学的数据筛选出来,首先要进行一个判断,判断某个同学(以 报名表的“张三”为例),是否参与了两个小组,也就是说是否在美术(B2)和书法(C2)的单元格 中有“√” 得到的公式是: IF(AND(报名表!B2="√",报名表!C2="√"), ,) 这个公式的意思是:如果B2 和C2 的值都是“√”,就要返回相应的值。 2、返回什么值呢?如果符合条件就返回姓名、美术小组、书法小组的值。首先考虑返回姓 名的情况。 如何返回姓名呢?很简单,只要符合条件就返回当前行指定列处(第1列)的值。而INDEX 函数就可以实现返回引用区域指定的行列的值。特别注意,这个行列是引用区域的行列,不表工作表 的行列。 INDEX 函数的格式:INDEX(引用区域,行,列excel中index函数的使用方法) INDEX函数可以返回指定区域数据的
值。区域是哪个区域呢?当然是报名表中的有效数据。 即A2:D10,这个区域是固定不变的,用静态引用$A$2:$D$10。 怎么知道在哪行呢?为就要用到ROW函数,求出当前单元格(A2)在哪行,但这个行值是 工作表的行值,不是引用区域的行。为了引用方便,我们把引用区域的行列扩大一下,与工作表的行 列一致,则引用区域为变为$A$1:$D$10。 由于姓名在第1列,列值为1。则INDEX 的公式就出来了。 INDEX(报名表!$A$1:$D$10,ROW(报名表!A2),1) 3、如果不符合条件呢?则返回一个空字符就行了。 完成的公式如下: =IF(AND( 报名表!B2=" √", 报名表!C2=" √"),INDEX( 报名表!$A$1:$D$10,ROW( 报名 表!A2),1),"") 红的是符合条件时返回值,绿的是不符合条件的返回值。 三、将公式输入到第二个表的A2 单元格即可,向下拖动应用一下。 效果如下图: 这样是不是将只报名美术与书法的学生的姓名取出来了。 同样的道理,如果符合条件时返回第2 列的值呢?就取出美术小级的值。公式是: =IF(AND( 报名表!B2=" √", 报名表!C2=" √"),INDEX( 报名表!$A$1:$D$10,ROW( 报名 表!A2),2),"") 返回第三列的值,即书法小组的值的公式: =IF(AND( 报名表!B2=" √", 报名表!C2=" √"),INDEX( 报名表!$A$1:$D$10,ROW( 报名 表!A2),3),"") 分别在B2 和C2,输入上面两个公式,再拖动应用。效果如下图: 大功告成,效果出来了。 四、数据的处理。 最后将筛选出的数据稍加
处理,去掉空白数据就行了。不要告诉你不会处理哟?呵呵! 我的豆丁文档:/mydoc-478452-1.html 欢迎访问,共同交流! lfchenyong@qq
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论