资源描述:
《用index和match函数实现大量数据的查询》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、用index和match函数实现大量数据的查询工作中,我们在表格里查询一个或几个数据,可以用"查找"-"替换"来实现。如果有大量数据需要我们查询并输出相关资料,逐个查询将浪费大量时间和精力。利用EXCEL自带的index和match函数组合可以轻松完成任务。举例:现在有某单位组织的会员活动的邀请人员名单,如图1:总表里是本次活动邀请的人员资料共10000条(如图1),分表里是已经确认参会的人员名单是其中的8000个(不连续)(如图2),但是分表里只有确认参会人员名单,而没有相关资料,例如工作单位、电话等字段,现在要将分表里的人员资料进行补充。用CTRL+F当然可以逐个查找,但是8000个
2、足以令人晕倒.其实,利用index和match函数可以方便完成这个任务。我们图3工作簿的分表中C3单元格中输入"=index(总表!A:H,match(分表!A3,总表!A:A,0),7)",D3单元格中输入"=index(总表!A:H,match(分表!A3,总表!A:A,0),8)"。回车即出现对应的工作单位和电话。INDEX(array,row_num,column_num)返回数组中指定单元格或单元格数组的数值Array是一个单元格区域或数组常量。Row_num和column_num分别表示数组中的行序号和列序号。具体到本例中array表示总表中可供查找的数据区域,就是需要从中查
3、找相应数据单元格范围,Row_num是指所要返回的数据在数组中的行序号号,column_num是指所要返回的数据所在单元格的列号。本例中的Array就是"总表!A:H",列号column_num即是"工作单位"在数组中的列序号"7",行序号Row_num未定。行序号Row_num需要用函数match来描述,match返回在指定方式下与指定数值匹配的数组中元素的相应位置(行号),其语法为MATCH(lookup_value,lookup_array,match_type)Lookup_value为需要在数据表中查找的数值。Lookup_array可能包含所要查找的数值的连续单元格区域。Ma
4、tch_type为数字-1、0或1如果match_type为1,函数MATCH查找小于或等于lookup_value的最大数值。如果match_type为0,函数MATCH查找等于lookup_value的第一个数如果match_type为-1,函数MATCH查找大于或等于lookup_value的最小数值具体到本例中,分表中C3单元格在总表中的对应数据的行号就是会员编号200720217在总表中相同的会员编号所在的行号。match(分表!A3,总表!A:A,0)就是返回分表A3单元格中数值在总表中对应的相同会员编号的数值所在单元格的行号。就是总表中会员编号字段里值为200720217的
5、单元格的行号,"总表!A:A"就是指总表的会员编号字段的单元格范围;"0"表示查找等于200720217的第一个数值的行号。该例中函数match(分表!A3,总表!A:A,0)代替了INDEX(array,row_num,column_num)中的参数row_num综上所述函数index(总表!A:H,match(分表!A3,总表!A:A,0),7)返回分表中A3单元格中的数值200720217在总表中"会员编号"字段中的相同数值的单元格的行
6、号和工作单位字段列号对应的单元格中的数值。选中C3单元格双击其右下角的填充柄(鼠标指针变为实心黑"+"时双击),即把公式向下填充至最后一个记录。此时分表中工作单位字段全部填充了相应的数据。如图3同理D4单元格中函数index(总表!A:H,match(分表!A3,总表!A:A,0),8)是返回对应数值的电话。选中C4单元格双击其右下角的填充柄(鼠标指针变为实心黑"+"时双击),即把公式向下填充至最后一个记录。此时分表中电话字段全部填充了相应的数据。同样的方法,如果需要调出其它字段如"籍贯"、"民族"等数据,只需改变INDEX(array,MATCH(lookup_value,lookup
7、_array,match_type),column_num)里的行序号参数column_num即可。该方法中MATCH(lookup_value,lookup_array,match_type)里的lookup_value参数应使用没有重名的字段,该例中的会员编号没有重复,如是用人名做参数,如人名有重复,就只能返回对应的行号最靠前的数据。该方法可以节省大量时间,如果各位读者遇到类似问题,均可使用此函数。该方法在微软EXCEL2003