sql空字符串判断函数_Excel数据还可这样来查询:用SQL查询输出工作表指定区域更高效!...

对于数据库编程的朋友而言,SQL结构化查询技术并不陌生,也非常好用,凭借SQL强大的功能可以有效实现对数据库的数据表数据的“增、删、改、查”操作。一般而言,比较高级的语言环境,例如Java、C#、ASP.NET、PHP、Python等都经常用到SQL方式访问数据库数据,而我们Office高级办公中Excel数据查询等办公操作较少用到过SQL方式,这主要是因为要使用SQL,还必须知道它的使用步骤,所以很多时候我们都是尽量运用Excel自身的查询函数进行或者至多就是进入VBA后台用简单的IF判断配合循环结构去完成数据查询。

数据量少的时候,用上面的IF判断配合循环结构去完成数据查询方便,也感觉不出来时间的耗费问题。当数据量很大时,可以明显感觉出时间的耗费问题,同时程序的判断语句也比较复杂。今天我们就要用简单的SQL技术在VBA环境中取代冗长的IF判断配合循环的方式,同时也大大提高了查询效率。不仅如此,还可将用它的查询结果输出到指定的地方:Excel内部的工作表区域或者列表控件。今天我们就先分享一下用SQL技术如何将查询结果输出到Excel内部的工作表区域吧!

使用SQL技术前,我们必须知道其步骤过程使用规范:1-创建数据访问的ADODB.Connection连接对象实例和ADODB.RecordSet数据记录集合对象实例;2-带条件的SQL字符串语句的的编辑; 3-数据连接对象实例的打开(例如:cnn.Open "Provider=Microsoft.ACE.OLEDB.15.0;Extended Properties=Excel 12.0;Data Source=" & DS_Path,其中:cnn-连接对象,DS_Path-数据源的完整路径);4-结构化查询语句执行(方式一:cnn.Excute (sql_str);方式二:rst.Open cnn, sql_str,A,B 其中:cnn是连接对象,sql_str是带条件的SQL字符串语句,A是数据记录游标模式,B是数据访问方式);5-将结构化查询的结果输出;6-关闭数据记录集合对象实例并置空、关闭数据连接对象实例并置空。

对于我们Office办公工作的朋友们而言,也许上面的ADODB不是很清楚是什么意思,我们有必要在这里普及下其知识,它的英文全称是“Active Data Objects DataBase”中文意思即是“活动数据对象数据库”。好了,现在我们就来以模糊查询方式如何实现SQL输出到Excel工作表的数据区域?

一、SQL数据操作之一“查询”操作的语句字符串书写规范

(一)语法格式:

"Select 字段名列表 From 访问的数据表 Where 条件列表 [Order by…] "

(二)几点说明:

1-“字段名列表”规范形如“字段名1[,字段名2[,字段名3…]]…等,若是所有字段则直接用*号

2-访问的数据表可以是数据库表或者指定的Excel的数据区域,例如Excel类型的数据源表的格式应该是中括号括起来(其他类型的数据库表不需要中括号括起来)的形如[Sheet1$A1:D21]样式,这里的$是Excel ODBC驱动程序识别Excel文件的工作表Sheet时追加的字符

3-条件列表是形如“Where 年龄>17 And 姓名=’张三’ Or 姓名 Like ‘%王%’”等形式,其中的“姓名 Like ‘%王%’”就是一种模糊查询条件(寻找含姓名中含有“王”的人,%是通配符)

4- Order by…是按照各种方式查询检索,可选可省写

二、准备一个待查询的Excel数据区域

我们输入下面一片简单的数据以备作查询使用,并添加一个查询交互按钮,再增设一个数据验证输入的单元格作为姓名查询的关键字输入或选择。如下图所示

00e6946e0c1845bd6b7106c5fae9adfd.png

图1 准备的Excel工作表Sheet1查询数据

三、体验通过SQL进行的模糊查询和精确查询的结果输出到Excel工作表给定的区域的情况

(一)在姓名查询关键字输入单元格中输入模糊的关键字。如下图所示

bd11af4de7f56f0b5b01afc95c7e743b.png

图2 模糊查询关键字输入

(二)点击按钮,将在结果区域出现模糊查询的结果数据。如下图所示

253f0427e94e93fdfdd726677aabf8b9.png

图3 Excel工作表给定的区域呈现的模糊查询结果数据

(三)通过该关键字数据验证单元格选定一个精确的姓名。如下图所示

c7dc0f7733ee1fbc571baba3fd0e1c6e.png

图4 精确查询关键字的选定(非输入)

(四)又再次点击按钮,将在结果区域出现出现精确查询的结果数据。如下图所示

7cb9dda0ac3c988ef43824006599530d.png

图5 Excel工作表给定的区域呈现的精确查询结果数据

(五)在数据验证单元格中如果未输入关键字或未选定关键字,则将出现空关键字输入的错误提示。如下图所示

2069f5d685708a369074b522bfb07644.png

图6 未输入关键字或未选定关键字的情况

(六)在数据验证单元格中如果输入的关键字不存在,则将出现数据记录未找到的的错误提示。如下图所示

e7ff4d3327c7c0fa7041c639ec8f3100.png

图7 输入不存在的关键字查询的情况

看了上面的操作体验,接下来我们来看一下在VBA后台是如何实现的呢?下面,我们将呈现实现的功能代码,代码的每一句几乎我们都用绿色注释的非常清楚,便于大家学习交流。

四、通过SQL进行查询Excel数据结果输出到Excel工作表给定区域的功能代码截图

模块1中功能代码:

a8963b3d9f333910804b9ec883b34bc2.png

图8 功能代码截图1

6ea071fa6b70833acfa208473c208d13.png

图9 功能代码截图2

40c9386f04d32622aeda22efdd2fb455.png

图10 功能代码截图3

运用SQL进行查询Excel数据结果输出到Excel工作表给定区域的方法我们就给各位分享完毕了,在这里,我们分别用了模糊与精确查找两种方式实现了SQL查询Excel数据结果输出到Excel工作表给定区域。这种查询对于有大量Excel数据来讲有非常的现实的查询效率意义,大大地简化了繁琐的IF结构判断结合循环结构的检索,所有的条件都简化到SQL的Where子句中去即可。希望今天的分享能够为各位的数据查询提供这种更简洁的方法。

当然,有朋友会问:能否将Excel数据用SQL查询结果输出到像其他软件那样放在窗体上的像表格那样的控件中呈现呢?放心,我们会放在下一期作品中来解决这个问题,请大家平时留意关注!

最后,还是老话,非常感谢各位粉丝朋友对我的关注(头条号:跟我学Office高级办公)、推广和点评,有了各位的支持,我会带着各位的鼓励一如既往地推出更多有实用意义的作品,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值