今晚加班统计汇总70多万行EXCEL数据,对每行数据进行15次VLOOKUP查找后,EXCEL毫无悬念地失去响应,CPU立刻达到100%。和老婆看了1个多小时元宵晚会后回来一看,结果依然没有算出来。突然想起之前看过一本书《让EXCEL飞》,提到海量数据用EXCEL+ACCESS进行分析。尝试一下,10分钟完成全部查询,其中大部分时间还是花在EXCEL文件处理上。这里对操作步骤简单记录:
1、EXCEL导入ACCESS
打开ACCESS的“外部数据”,选择外部EXCEL导入。需要注意不要让ACCESS添加主键,避免自动添加一个ID列。同时需要设置好各列的数据类型,如文本、双精度、日期/时间等。在ACCESS2010中有“内存”数据类型,这是新增的数据类型,具体使用方式暂不清楚。一路点下一步,就可以完成数据导入了,成功后可以发现ACCESS中创建了一个新表。
2、利用ACCESS处理数据
在ACCESS中处理数据主要利用SQL实现快速查询,比EXCEL的VLOOKUP快N倍。这里的方法有:
- 方法1:打开ACCESS的SQL页面,写SQL的SELECT语句关联多个表进行查询。
- 方法2:打开”查询设计“进行自定义查询项目。
多年不写SQL,语法忘记七七八八了,我还是偷懒用方法2进行自定义查询。方法很简单,在”显示表“页面中,添加需要查询的表,再在界面上通过鼠标点击拖拽方式,实现外键关联,并双击两个表的连接实线设置连接方式。这里主要有:
- 只包含两个表中链接字段相等的行--类似inner join
- 包括左表所有记录和右表中联接字段相当的那些记录--类似left join
- 包括右表所有记录和左表中联接字段相当的那些记录--类似right join
随后,在界面下半部分选择查询结果字段,点击查询得到结果,再点击”保存“按钮保存本次查询。
3、ACCESS导出EXCEL
回到EXCEL,利用导入数据功能(类似第1步EXCEL导入ACCESS),选择步骤2中查询数据结果导入即可。
总体说来,EXCEL+ACCESS的关键在于第二步利用ACCESS处理数据。对于SQL语句熟悉最好,尤其SELECT。对于记录数在10万左右的EXCEL文件,直接处理数据很不方便,需要利用ACCESS协助处理。当然,如果数据量达到百万级别,ACCESS也力不从心了,需要用ODBC连接MS SQL等大中型数据库。