打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[转]用index和match函数实现大量数据的查询

用index和match函数实现大量数据的查询

(2011-12-28 15:30:45)
标签:

杂谈

用index和match函数实现大量数据的查询

 

工作中,我们在表格里查询一个或几个数据,可以用"查找"-"替换"来实现。如果有大量数据需要我们查询并输出相关资料,逐个查询将浪费大量时间和精力。利用EXCEL自带的indexmatch函数组合可以轻松完成任务。

 

举例:现在有某单位组织的会员活动的邀请人员名单,如图1

总表里是本次活动邀请的人员资料共10000条(如图1),分表里是已经确认参会的人员名单是其中的8000个(不连续)(如图2),但是分表里只有确认参会人员名单,而没有相关资料,例如工作单位、电话等字段,现在要将分表里的人员资料进行补充。

 

用CTRL+F当然可以逐个查找,但是8000个足以令人晕倒.其实,利用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表示总表中可供查找的数据区域,就是需要从中查找相应数据单元格范围,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    可能包含所要查找的数值的连续单元格区域。

 

Match_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的单元格的行号,"总表!A:A"就是指总表的会员编号字段的单元格范围;"<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />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在总表中"会员编号"字段中的相同数值的单元格的行号和工作单位字段列号对应的单元格中的数值。

 

选中C3单元格双击其右下角的填充柄(鼠标指针变为实心黑"+"时双击),即把公式向下填充至最后一个记录。此时分表中工作单位字段全部填充了相应的数据。如图3

 

同理 D4单元格中函数index(总表!A:H,match(分表!A3,总表!A:A,0),8)是返回对应数值的电话。

 

选中C4单元格双击其右下角的填充柄(鼠标指针变为实心黑"+"时双击),即把公式向下填充至最后一个记录。此时分表中电话字段全部填充了相应的数据。

 

同样的方法,如果需要调出其它字段如"籍贯"、"民族"等数据,只需改变INDEX(array, MATCH(lookup_value,lookup_array,match_type),column_num)里的行序号参数column_num即可。

 

该方法中MATCH(lookup_value,lookup_array,match_type)里的lookup_value参数应使用没有重名的字段,该例中的会员编号没有重复,如是用人名做参数,如人名有重复,就只能返回对应的行号最靠前的数据。

 

该方法可以节省大量时间,如果各位读者遇到类似问题,均可使用此函数。该方法在微软EXCEL2003中使用正常有效.

 

 


 

阅读
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
值得收藏的公式,使用公式实现对Excel数据删除重复项统计
excel常用函数之索引函数index和交叉函数match
财务评价中的投资回收期计算 (利用EXCEL软件中INDEX和MATCH函数)-360文档中心
总结篇--速速来看,函数高手们必备的技能
Excel|三个不同查找公式的异曲同工之妙及细微区别
如何用EXCEL制作出带导航条的图片查询工具?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服