我想要做的正是这样的:http://dailydoseofexcel.com/archives/2004/12/13/parameters-in-excel-external-data-queries/但我想在 Excel 2010 中执行此操作,而且我正在查询 SQL Server 而不是 MS Access。 可以吗?
详细说明一下我到底想从该链接获得什么,即拥有引用工作表中单元格的查询参数。目前我正在使用 VBA 和单元格更改触发事件。有没有更简单的方法?
笔记:任何使用接受答案中的方法的人,如果您希望电子表格在未安装 SQL Server 的计算机上工作,那么您可能会发现这很有帮助:https://dba.stackexchange.com/a/109221/46815
答案1
所以我终于搞明白了。以下是我的步骤。
- 打开一个新的 Excel 工作表(我使用的是 Excel 2010)
- 单击功能区上的“数据”选项卡
- 点击“来自其他来源”
- 选择“来自 Microsoft Query”
- 选择您的数据源
- 选择任意表来填充查询框中的列 - 这并不重要,因为我们稍后会覆盖它 - 然后单击“下一步”
- 继续单击下一步,直到到达完成按钮,然后单击完成
- 单击“属性...”
- 点击“定义”选项卡
- 连接类型应该显示“数据库查询” - 如果显示,则可以添加参数,如果没有,则似乎无法添加参数
- 使用要用于访问 SQL 数据库的查询来更新命令文本 - 尚未尝试使用其他数据库,但我相信它会在其他数据库上起作用
- 为了创建一个参数,只需在 where 子句中放入一个 ? 即可。例如 select * from table1 where col1 = ?
添加参数存在一些问题。它们仅在最后的 where 子句中起作用。即,如果您使用子查询、枢轴、cte 等,则无法在其中添加参数。只能在最后的 where 子句的末尾添加
单击“确定”两次 - 将出现一个弹出窗口,要求您输入参数
填写任何内容 - 我们稍后会更改
单击结果中的任意位置,然后单击功能区上“数据”选项卡上的“属性”
点击小手属性图标
单击“定义”选项卡
现在您将看到“参数...”按钮可点击。单击它并将选项从提示输入值更改为从以下单元格获取值
如果有人找到更快、更简单的方法 - 我洗耳恭听,但这始终有效,并且适用于非常复杂的查询。所以对我们来说,这是正确的解决方案