如何在Excel中使用SQL语言?
HI,大家好,我是星光。
江湖有云,数据分析入门有三个必备的工具:SQL获取数据、Excel分析数据、PPT呈现数据。
其中SQL锋利如刀,入门即可实战。几乎任何一款强大的工具或语言都少不了SQL的影子,Excel也不例外;它既可以给透视表插上翅膀,又可以和VBA搭配作战,还可以同PowerBI称兄道弟。
那么如何在Excel中使用SQL呢?
有三种方法▼
第一种是MS Query法,很少用,越来越少用,略。
第二种是OLE DB法,通常指的也就是透视表法。
操作演示动画如下..▼
图文说明如下..▼
在Excel【数据】选项卡下单击【现有链接】,在弹出的【现有链接】对话框中,单击【浏览更多】,选取目标文件后,依次【确定】,得到下面的【导入数据】对话框。
单击【属性】按钮后,得到【链接属性】对话框,再单击【定义】选项卡,即可在【命令文本】编辑框中输入SQL语句,然后【确定】执行即可。
这种方法通常搭配数据透视表(上图显示方式选择【数据透视表】),此时SQL获取的记录集会自动成为透视表的缓存数据源,也可以搭配Power Pivot(高级版本Excel勾选上图的【将此数据添加到数据模型】)。
……
对于没有VBA基础的朋友来说,通常推荐这种方法,只要会写SQL查询语句,就可以直接使用了。
不过——如果你会用VBA,就更推荐VBA+ADO+SQL的方法。
和第2种方法相比较,该法的优点在系列文里已经说过很多了,其实最重要的就两点,掰手指头:
1,借助VBA,SQL语句可以使用变量,更加灵活自由。
2,借助ADO,对数据,SQL除了查询以外,还可以增改删。
对于VBA代码连面都不熟的朋友而言,是不是就不能使用VBA执行SQL了呢?
并不是。
VBA执行SQL语句有一个固定的套路。
哪怕你连VBA代码一句都看不懂也没关系,只要知道如何复制运行VBA代码,以及知道在哪里写入SQL语句就可以了。
复制以下VBA代码:其中第11行代码用于填写SQL语句,第14行代码指定存放SQL查询结果的工作表。
代码如看不全,可以左右拖动..▼
Sub ByADO_SQL()
Dim cnADO As Object
Dim rsADO As Object
Dim strSQL As String
Dim i As Long
Set cnADO = CreateObject('ADODB.Connection')
Set rsADO = CreateObject('ADODB.Recordset')
cnADO.Open 'Provider=Microsoft.ACE.OLEDB.12.0;' _
& 'Extended Properties=Excel 12.0;' _
& 'Data Source=' & ThisWorkbook.FullName
strSQL = 'SELECT * FROM [A$] ' '//此处写入SQL代码
Set rsADO = cnADO.Execute(strSQL)
'//将工作表名称修改为实际放置查询数据的工作表名称▼
Worksheets('工作表名称').Select
Cells.ClearContents
For i = 0 To rsADO.Fields.Count - 1
Cells(1, i + 1) = rsADO.Fields(i).Name
Next i
Range('A2').CopyFromRecordset rsADO
rsADO.Close
cnADO.Close
Set cnADO = Nothing
Set rsADO = Nothing
End Sub