设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 27612|回复: 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

使用道具 举报

2#
发表于 2011-3-13 09:16:28 | 只看该作者
学习了,谢谢
3#
发表于 2011-3-13 10:50:01 | 只看该作者
本帖最后由 aslxt 于 2011-3-13 11:22 编辑

好好学习天天向上
请问(方法4):
查询条件输入的那些单元格是否可以做成组合框的形式?
可否改成模糊查询?
谢谢
4#
发表于 2011-3-13 13:24:49 | 只看该作者
谢谢楼主大人
5#
发表于 2011-3-13 13:34:46 | 只看该作者
本帖最后由 polygala1978 于 2011-3-13 13:37 编辑

体验了下,发现模糊(字段不全情况下)查询不能用,希望能添加上。
6#
 楼主| 发表于 2011-3-13 13:36:13 | 只看该作者
回复 aslxt 的帖子

改成有效性序列时,就相当于组合框了~~但是这个数据较多,可能做成二级下拉菜单要好些。
7#
 楼主| 发表于 2011-3-13 13:41:28 | 只看该作者
回复 polygala1978 的帖子

没有啊,我输入两个条件还是可以查询的啊?

你的意思可能是想改成Like语句,用通配符来做是吧?那我抽空再改改了。O(∩_∩)O~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
8#
发表于 2011-3-13 14:30:23 | 只看该作者
回复 roych 的帖子

主要是可投区和不可投区需要实现模糊查询,(主要是顾客信息不全,需要模糊搜索)例如:城关镇,输入城关就能查询到与城关相关的地区。不知道能否实现。再次感谢您的帮助。
9#
 楼主| 发表于 2011-3-13 14:59:29 | 只看该作者
回复 polygala1978 的帖子

可以实现。详见我更新后的附件。

点击这里给我发消息

10#
发表于 2011-3-13 15:58:32 | 只看该作者
怎么单单漏了“查找”和“定位”两个功能
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 03:08 , Processed in 0.117712 second(s), 38 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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