|
本帖最后由 roych 于 2011-3-13 15:04 编辑
跟Access相比,Excel的查询功能尽管比较弱,但还是可以进行的,大体有以下几种方法:
1、自动筛选或者高级筛选法。如果不需要常常更改条件的话,自动筛选或者高级筛选,不失为一种好办法。毕竟操作的步骤并不多,即便条件再多,一分钟内应该也可以完成。
2、公式法:用Index+Small,再加上条件数组,是可以进行一定的查询的。格式一般是:{=Index(区域,small(if(条件,区域行数,),row(1:1)))},详细见附件。
3、导入数据法。要领在于导入之后再编辑SQL语句,以达到查询的目的。需要注意的是,数据源位置必须正确,详细看附件中的“说明”工作表。
4、利用内置函数,写VBA进行查询。利用内置函数的Countif、CountA等函数,再加上For语句,逐个历遍,以达到查询的目的。
5、利用ADO对象,编写数据集语句执行。
好,方法说完了,有兴趣的可以看看它们之间的优缺点了:
前面三个针对单次查询较为有效,可以省却编程的繁琐。
方法1,如果需要对所筛选的数据进行求和,则需要先筛选出来,再求和(当然,你也可以用状态栏来显示求和结果)。
方法2,当然也无法求和的了,借助单元格变量,明显比自动筛选方便。而且,你还可以多加几个条件,——把if里的语句改为:(Range1=条件1)*(Range2=条件2)……。而和第一种方法相比,其缺点在于数据较多时,对内存影响比较大。
方法3,比起方法2,方法3更加灵活,可以随时变更SQL条件而达到多次查询的目的。当然,前提是,您必须知道SQL语句的基本语法。
方法4,比起方法3,不用每次都更改SQL语句,而只须在单元格填上条件即可,自然方便多了。不足之处在于条件较多,循环语句历遍时,对内存要求比较高,也因此而变得不易于调试。例子来源于Polygala1978:
http://www.office-cn.net/forum.php?mod=viewthread&tid=96395&page=1#pid586469,在此一并谢过。
方法5,和方法4相比,同样可以达到相同的查询目的,而由于没有用到循环语句(或者循环语句比方法4的要少),从而更加优化了代码的执行效率。在执行查询前,应先调试SQL语句是否有误,还要注意字段类型等,详见附件的代码注释。
希望大家不要觉得Roy过于罗嗦噢。不过,Excel查询又岂是三言两语可以说得很清楚的呢?如有不清楚之处,请大家随时反馈。
更新后的附件,有了模糊查询的功能。相信大家更加喜欢吧。O(∩_∩)O~~
在VBA语言里,Access和Excel的是不同的,前者为星号(*),后者为百分号(%),这很是困惑了我一阵子。在这里顺便提一下,以便新手少走一些弯路。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|