归纳总结Excel SQL查询中"表"的使用
好酷屋教程网小编为您收集和整理了归纳总结Excel SQL查询中"表"的使用的相关教程:本篇文章给大家带来了关于excel的相关知识,其中主要介绍了关于sql查询中表的使用,包括了区域成表、跨工作簿的表等等相关内容,希望对大家有帮助。今天聊一下SQL语句中的Excel表。目录1.区域成表
本篇文章给大家带来了关于excel的相关知识,其中主要介绍了关于sql查询中表的使用,包括了区域成表、跨工作簿的表等等相关内容,希望对大家有帮助。
今天聊一下SQL语句中的Excel表。
目录
1.区域成表2.跨工作簿的表1.区域成表
Excel工作表和数据库的数据表有很多不同之处,最显著的地方在于,数据库的数据表可以理解为由行列构成,而Excel工作表则是由一个又一个单元格构成,且这些单元格拥有独特的地址表述方法,也就是A1或R1C1,它们还可以构成数据相连的单元格区域,例如A2:H8。
那么问题来了,如果我们只需要计算某张Excel工作表的部分区域的话,SQL该怎么表述呢?
这种问题是很常见的。
比如,很多人的Excel标题行并不是处于表格的第一行,而是第2行……
如下图所示
此时,我们希望计算A2:F列的单元格区域,这样我们更容易使用字段名处理数据,而不是整张Excel工作表……
再比如,一张表里存在两个或更多个“表”……这句话什么意思呢?
见下图
图中所示的表格中,既存在一份“教师表”,又存在一份“学生表”;如果我们只希望SQL引用计算A2:D8的教师表数据……
……Excel中的SQL其实是支持将工作表的单元格区域作为“表”使用的。
上图所示的问题,SQL可以写成:
SELECT 姓名,学科 FROM [数据表$A2:D8]查询结果如下:
而第1种情况,我们知道数据开始于A2单元格,但不知道结束于F列的哪个单元格,SQL可以写成:
SELECT 姓名,爱好 FROM [学生表$A2:F]另外,如果我们需要SQL引用计算表格D:G整列的数据,SQL可以写成:
SELECT * FROM [学生表$D:G]总结以上几种Excel工作表区域的表述方式,也就是,工作表名称+美金符号$+相对引用状态下的单元格地址,最后使用中括号包起来。
就酱紫。
本节小贴士:
[学生表$A2:F],我们说该语句可以引用从A2至F列最后存在数据的单元格区域,但这是有一个限制前提条件的,即非自连接状态。所谓自连接是指SQL应用于链接自身的工作簿。自链接状态下,A2:F的表达方式最多是A2:F65536行;倘若此时需要的引用行超过65536行,请使用整表模式。
2.跨工作簿的表
一个众所周知的问题是,Excel函数在处理跨工作薄数据时很是疲态,除了个别几个查找引用类函数(例如VLOOKUP等),绝大部分函数都需要打开相关工作簿后才可以计算使用。
是的,VLOOKUP函数并不需要打开相关工作簿也可以跨工作薄使用,而且在VLOOKUP公式书写完成后,即便你把它所引用的工作簿给删了,也不妨碍它计算,这是因为它已经把相关数据缓存到了公式所在的工作簿中,不过VLOOKUP这种模式并不支持函数复杂嵌套……打个响指,关于这一点,如果你感兴趣,我们改天单独聊一下。
……咳,说回SQL~~
……我们之前分享的SQL语句都是处理当前工作簿的表格,如果我们所需要处理的数据位于其它工作簿时,SQL该怎么表述呢?
例如,获取位于计算机D盘的“EH小学”文件夹下的“学生表.xlsx”工作簿中的“成绩表”的所有数据——一口气读完这话的,不得不让在下心生佩服。
如果是OLE DB法(该方法参考本系列教程第1章),SQL语句如下
SELECT * FROM [D:\EH小学\学生表.xlsx].[成绩表$]FROM后指定表字符串有两个部分构成,第一个中括号内是指定工作簿的存放路径+带后缀的完整工作簿名称,后一个中括号内是工作表名称,两个中括号之间使用英文点号(.)相连。
如果是通过VBA+ADO使用SQL语句……
敲书柜前方预警:VBA基础差的童鞋请自行跳过以下内容……
相比于OLE DB法,VBA+ADO的方法要灵活的多,它可以使用ADO直接创建并打开与指定工作簿的链接,因此SQL语句就无需再指定工作簿完整名称等。
代码参考如下
Sub ADO_SQL()'适用于除2003版以外的高版本ExcelDim cnn As Object, rst As ObjectDim strPath As String, strCnn As String, strSQL As StringDim i As LongSet cnn = CreateObject("adodb.connection")strPath = "D:\EH小学\学生表.xlsx" '指定工作簿strCnn = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & strPathcnn.Open strCnn '创建并打开到指定工作簿的链接strSQL = "SELECT * FROM [成绩表$]" 'strSQL语句,查询成绩表的所有数据Set rst = cnn.Execute(strSQL) '执行strSQLCells.ClearContentsFor i = 0 To rst.Fields.Count - 1Cells(1, i + 1) = rst.Fields(i).NameNextRange("a2").CopyFromRecordset rstcnn.CloseSet cnn = NothingEnd Su以上代码第7行直接指定了需要连接的工作簿完整名称,SQL语句内也就不再需要特别处理。
但更多的情况是,ADO创建的链接是一个工作簿,需要获取的数据在另一个或多个工作簿,例如两个工作簿之间的数据查询统计。此时通常使用的代码如下
Sub ADO_SQL2()'适用于除2003版以外的高版本ExcelDim cnn As Object, rst As ObjectDim strPath As String, strCnn As String, strSQL As StringDim i As LongSet cnn = CreateObject("adodb.connection")strPath = ThisWorkbook.FullName '代码所在工作簿的完整名称strCnn = "Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=" & strPathcnn.Open strCnn '创建到代码所在工作簿的链接strSQL = "SELECT * FROM [Excel 12.0;DATABASE=D:\EH小学\学生表.xlsm].[成绩表$]"Set rst = cnn.Execute(strSQL) '执行SQLCells.ClearContentsFor i = 0 To rst.Fields.Count - 1Cells(1, i + 1) = rst.Fields(i).NameNextRange("a2").CopyFromRecordset rstcnn.CloseSet cnn = NothingEnd Sub代码中第7行创建了当前工作簿的链接,SQL语句中又指定了另外一个工作簿的链接。SQL语句如下
SELECT * FROM [Excel 12.0;DATABASE=D:\EH小学\学生表.xlsx].[成绩表$]FROM指定表的字符串有两部分组成。第一个中括号中,Excel 12.0是目标工作簿的版本号,第2章时我们讲过,Excel 12.0适用于除了2003以外的所有Excel版本。DATABASE指定的是数据源工作簿的路径和名称。第2个中括号内是工作表名。两个中括号之间使用英文点号相连。
看起来似乎VBA+ADO方法的SQL语句比OLE DB法更复杂?确实如此,不过前者的功能也更强大。比如,它可以通过VBA对象的属性、方法,循环和判断语句等,有条件的筛选工作簿和工作表……相比之下,OLE DB中的SQL语句就是纯手工常量模式了。当然,更重要的是,前者不但可以查数据,还可以增改删数据,后者却只限于查。
以上就是归纳总结Excel SQL查询中”表”的使用的详细内容,更多请关注其它相关文章!
以上就是好酷屋教程网小编为您收集和整理的excel相关内容,如果对您有帮助,请帮忙分享这篇文章^_^
本文来源: https://www.haoku5.com/shuma/63e9de163c3722d869045a46.html
相关推荐
热门专题
电脑出现选择一个选项疑难解答(电脑出现只有一个选择)
1.电脑出现只有一个选择我的电脑右下角的选择输入法的图标没有了?怎么把它调出来?我的电脑右下角的选择输入法的图标没有了,怎么把它调出来,进入控制面板设置一下就可以了。如图示,在控制面板中进入区域和语平板电脑搜狗键盘怎么移动图片(怎么移动搜狗悬浮键盘)
1.怎么移动搜狗悬浮键盘3当出现键盘悬浮的情况,这是因为不小心开启了悬浮键盘的功能,首先在某个聊天界面点击输入框打开键盘。2/3点击键盘的左上角按钮,该按钮图案可能是键盘图案、工具箱图案、搜狗标志图电脑连接网络受限制是什么原因(电脑联网显示网络受限)
1.电脑联网显示网络受限如提示网络连接受限制或无连接,可按以下方法操作:1、打开电脑“控制面板”,点击“网络连接”,选择本地连接,右键点击本地连接图标后选“属性”,在“常规”选项卡中双击“Inter电脑全屏截图怎么弄(电脑上如何全屏截图)
1.电脑上如何全屏截图 方法一:直接使用键盘中的PrintScrSysrq键实现全屏截图PrintScreenSysRq截图键 使用方法非常简单,只需要按下该键后即可完成全屏截图,然后我们三环耳机插电脑(三接头耳机怎么插电脑)
1.三接头耳机怎么插电脑如图所示,电脑耳机插口有两个,每个插孔下面有标识。比如,粉色的下面是个话筒话标志,浅绿色的是耳机🎧,有的电脑上有三个插孔,也就是在中间位置有一个混音插孔,一般是黑色的,就是电脑怎么抓屏(联想电脑怎么抓屏)
1.联想电脑怎么抓屏截图方法有多种:1、按“PrintScreenSysRq”,(在F12右边)全屏截图,就是抓整个屏幕;2、按Alt+PrintScreenSysRq,截取当前苹果电脑键盘电源(苹果电脑键盘电源灯闪烁是什么意思)
1.苹果电脑键盘电源灯闪烁是什么意思那可能是灯的问题,我的Mac键盘灯是白色的,你去售后问问呗。如果不是键盘脏的话,目测只能是灯的问题了吧,盖膜的应该没什么影响2.苹果电脑键盘指示灯一直闪如果您天天飞车电脑壁纸(天天飞车电脑壁纸超清)
1.天天飞车电脑壁纸超清汉字中隔壁的壁字是一个常用字,是墙体和陡峭的山涯、某些物体的表面,可以可以组成的词语有:1、墙壁,一堵墙体的表面。2、戈壁,戈壁滩寸草不生,全是沙石。3、壁画,是在墙壁、山涯21中关村报价:内存上升CPU下降
英特尔处理器的掉了下来,22nm是主要的降价,跌20-30元;32nmg850,i5-2320降价,5-25元。AMD处理器价格继续下跌。顶32nm//3870kAPUa8-3850是8电脑保修期一般多长时间(机械革命电脑保修期一般多长时间)
1.机械革命电脑保修期一般多长时间按国家规定整机保一年,配件三年保修2.机械革命电脑保修期一般多长时间啊第1步,查询电脑过没过保修期的方法是:第2步,1、翻转电脑,查看底部铭牌上的主机编号并