利用EXCEL函数快速整合数据
Excel在我们工作当中使用的非常频繁,但大多数人仅用它来进行编辑表格等简单操作。其实Excel的功能远远比我们想象的要强大。上个世纪,我们承办第一次职称计算机考试的时候,我做数据库维护的工作。当时就已经感觉到了Excel的强大,因为关于Excel的试题,我基本都不会。
最近在帮助我们财务整理数据的时候,利用Excel的函数,快速的完成了任务,再次感受到Excel的好处。
在整理关于新生各个数据的时候,首先需要把各个部门上报的数据进行统一:宿管部门的房间分配、教务的新生名单、财务的学费标准、银行的代扣数据。。。各个数据整合到一个excel表中。然后将统一好的表下发给各相关部门。这些表仅有两个共性:1、均为Excel表;2、均有学号。
刚开始的时候,并没有想到使用函数。因为大多数的表里面,存在第3个共性:人数是一致的。首先将每个表按照“学号”升序排序,然后复制/粘贴到同一表格里就ok了。但是,这里需要注意一个问题:单元格的格式会导致错误!最常见的问题是看不见的“空格符”。由于Excel并不像标准数据库那样定义每列的数据类型,这就容易导致不同来源(不同人操作)的Excel表格里,貌似“一样”的数据,其实并不相同。大家可能会有类似的经历,利用Excel排序得出的表格,往往不是我们想象的那样。OK,排除这一情况,加上后期的人工校验,虽然麻烦了一点,但仍然可以得到我们想要的结果。比如:将学生名单、房间号、收费标准、学费合并成一个统一的数据表。
我们注意到,上面统一数据的一个前提是:各个表的行数是一致的!那么问题随之而来:银行代扣金额部分如何处理?我们知道,在新生报到的时候,学生全部通过银行代扣完成,这种理想化的情况是不存在的。那么在银行代扣表里只有部分学生名单,无法使用上面的办法来操作了。这时候,需要利用Excel自身的函数来解决。其实上面的那种情况,利用Excel函数解决也是最好的办法。
这里我们要用到的函数是Vlookup(垂直查找)函数。假设Excel中存在两个工作表A和B:
A是包含完整学生名单的表,共A~F这6列,A为学号列;
B是包含部分学生名单的银行数据的表,B中第一列是学号、第二列是代扣金额;
两个表第一行都是表头;
共9000名学生。
那么在A表“G2”单元格的值为:vlookup(A2,B!A2:B9001,2,False)。
这里,函数使用了4个参数,语法如下:
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
Lookup_value: 为需要在数组第一列中查找的数值。本例中要查找学号。
Table_array: 为需要在其中查找数据的数据表。本例中,在B表的A2:B9001这个矩阵中查找与A表学号相同的行。
Col_index_num 为 table_array 中待返回的匹配值的列序号。本例中为2,即,返回找到行第二列的数值(银行代扣金额)。
Range_lookup 为一逻辑值,指明函数 VLOOKUP 返回时是精确匹配还是近似匹配。本例中为 FALSE,将返回精确匹配值。如果找不到相同学号,则返回错误值 #N/A。
A表的G3~G9001单元格的函数,除了第一个参数需要改为对于行的第一列外,其余值均一样。这样,通过Vlookup函数即可很快的返回我们想要的表。
同时,我们只需要核对值为#N/A的单元格即可。某些#N/A值也可能是“看不见的空格”等问题造成的。
这里只是Vlookup函数的一个简单应用,类似功能的函数还有lookup、Hlookup,详细参数设置及应用可参考Excel帮助文档。
很实用!谢谢
很简单、实用!谢谢
期待你更新
这个公式我经常使用,
希望留个联系方式,以便请教。