方法一:使用Microsoft Query(不推荐)

1、打开被当成数据库的Excel,切换到“公式”选项卡,将被当成数据库的区域定义成名称,如下:

2、关闭数据源Excel,打开一个新的Excel,切换到“数据”选项卡,点击“自其他来源”中的“来自Microsoft Query”,如下图:

3、选择ExcelFiles*,然后确定,如下:

4、选中数据源Excel,如下:

5、选择要查询的列,如下:

6、按提示操作下一步,最后在设计界面,点击SQL就可以打开SQL窗口输入SQL语句,如下:

7、选择“文件->将数据返回Microsoft Excel”菜单,如下:

8、在弹出的“导入数据”对话框中,选择表中位置即可导入数据,如下:

9、若想修改SQL语句,可以点击属性按钮,切换到定义选项卡,可以在命令文本中修改SQL语句,如下:

提示:此窗口也可以保存设置的连接文件。

方法二:OLEDB法(较好)

1、切换到“数据”选项卡,点击现有连接按钮,如下:

2、在现有连接对话框中选择“浏览更多”,如下:

3、浏览被当成数据源的Excel,弹出选择表格对话框,如下:

4、选择要被当成数据源的表,确定,弹出导入数据对话框,如下:

5、点击属性按钮,切换到定义选项卡,在命令文本中输入SQL语句,如下:

6、确定,在导入数据对话框中进行操作就可以将SQL语句的结果保存到当前Excel了。

方法三:使用vba(最便捷)

Sub DoSql_Execute()

‘当前Excel被当成数据库进行操作

‘当前Sheet会被清空,第一行变为标题,第二行开始为数据

‘修改Mypath就会引用其他Excel为数据源,修改Sql就可以实现自己的SQL查询

Dim cnn As Object, rst As Object

Dim Mypath As String, Str_cnn As String, Sql As String

Dim i As Long

Set cnn = CreateObject(“adodb.connection”)

Mypath = ThisWorkbook.FullName

If Application.Version < 12 Then

Str_cnn = “Provider=Microsoft.jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=” & Mypath

Else

Str_cnn = “Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0;Data Source=” & Mypath

End If

cnn.Open Str_cnn

Sql = “SELECT * FROM [学生表$]”‘//请在此处写入你的SQL代码

Set rst = cnn.Execute(Sql)

Cells.ClearContents

For i = 0 To rst.Fields.Count – 1

Cells(1, i + 1) = rst.Fields(i).Name

Next

Range(“a2”).CopyFromRecordset rst

cnn.Close

Set cnn = Nothing

End Sub

欢迎交流分享,联系qq:329876601