设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 25522|回复: 75
打印 上一主题 下一主题

[VBA编程/宏] 浅谈Excel查询

[复制链接]
跳转到指定楼层
1#
发表于 2011-3-12 23:37:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 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

本帖被以下淘专辑推荐:

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2 分享分享2 分享淘帖1 订阅订阅

点击这里给我发消息

推荐
发表于 2014-4-23 16:29:12 | 只看该作者
学习了,谢谢
回复 支持 1 反对 0

使用道具 举报

点击这里给我发消息

76#
发表于 2022-10-18 15:56:56 | 只看该作者
学习
回复

使用道具 举报

点击这里给我发消息

75#
发表于 2022-8-30 16:47:33 | 只看该作者
谢谢楼主大人
74#
发表于 2022-1-25 10:29:52 | 只看该作者
学习大师的作品
73#
发表于 2020-7-27 16:07:13 | 只看该作者
学习学习
回复

使用道具 举报

72#
发表于 2020-7-25 07:28:10 | 只看该作者
学习中,谢谢
71#
发表于 2019-5-23 09:25:53 | 只看该作者
学习
回复

使用道具 举报

70#
发表于 2018-7-15 10:25:23 | 只看该作者
来学习新技能。
69#
发表于 2017-3-23 12:35:54 | 只看该作者
谢谢
回复

使用道具 举报

68#
发表于 2017-1-16 07:31:42 | 只看该作者

学习了,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-2 13:07 , Processed in 0.114465 second(s), 39 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表