如何通过Power Query使用SQL查询Excel表格tblTransactions?
在Power Query中通过SQL操作Excel表格的方案
方法一:使用ODBC直接执行SQL查询(推荐)
这是直接在Power Query中输入SQL语句查询Excel表格的方式,无需VBA:
- 打开Power Query:点击Excel菜单栏的「数据」>「获取数据」>「从其他来源」>「从ODBC」
- 选择「连接字符串」选项,输入适配Excel的ODBC连接字符串(替换为你的文件实际路径):
Driver={Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)};DBQ=C:\你的文件路径\ExcelData.xlsx; - 点击「高级选项」,在弹出的输入框中填写你要执行的SQL语句,例如查询整个表格:
SELECT * FROM tblTransactions注意:如果你的表格是普通工作表(而非Excel命名表格),需要将表名改为
[工作表名$]格式,例如SELECT * FROM [Sheet1$] - 点击「确定」,Power Query会自动执行SQL并返回查询结果,你可以进一步编辑或加载到Excel中。
方法二:导入表格后用M语言实现SQL逻辑(备选)
如果ODBC连接遇到问题,也可以先导入表格,再用Power Query的M语言实现类似SQL的操作:
- 先通过「数据」>「获取数据」>「从文件」>「从Excel工作簿」导入
ExcelData.xlsx中的tblTransactions表格 - 在Power Query编辑器中,使用M语言函数模拟SQL操作:
- 模拟
SELECT *:直接保留导入的表格即可 - 模拟
WHERE筛选:使用Table.SelectRows函数,例如:Table.SelectRows(tblTransactions, each [TransactionDT] >= #date(2024,1,1)) - 模拟
GROUP BY聚合:使用Table.Group函数,例如:Table.Group(tblTransactions, {"TransactionOperator"}, {{"交易次数", each Table.RowCount(_), Int64.Type}})
- 模拟
常见问题解决
- 文件无法访问:确保
ExcelData.xlsx处于关闭状态,ODBC驱动无法访问打开的Excel文件 - SQL语句报错:检查表名格式是否正确,ODBC Excel驱动的SQL语法需适配Excel,例如日期值需用
#yyyy-mm-dd#包裹,字符串用单引号 - 驱动找不到:如果提示缺少驱动,安装对应版本的Microsoft Access Database Engine(32/64位需与Excel一致)
内容的提问来源于stack exchange,提问作者Test Test
相关产品推荐
相关产品推荐

