2017-04-13 357 views
1

我会简要解释一下我有什么需要,稍后如果可以的话,我将编辑这篇文章并添加一个可重复的示例。Power Query + VBA/Macro Vs.仅限VBA /宏

我的项目: 从Oracle数据库将数据查询到Excel中的一个工作表中,然后使用LOOKUP过程将数据复制到第二个工作表中的可编辑表格中。第二个工作表需要采用表格格式进行过滤,并有一个下拉选项可按日期范围过滤数据。数据需要每周1-2次更新,只有1-2名核准工作人员。

问题:
根据建议我安装了Power Query for Excel 2010,它需要依赖关系才能工作。便利因素非常好,它使得SQL查询可以编辑而不会在VBA代码中搞乱。但是,依赖性设置(用于数据连接的Oracle客户端)随意限制了这一点作为解决方案。

数据连接和查询以及数据查找都可以在VBA和分配的宏中完成。

问题: 我应该使用Power Query查询数据,然后使用VBA查找第二张LOOKUP和日期范围筛选 - 或者应该使用VBA Excel宏编写吗?

哪个更有利于未来?使用Power Query可以使这项任务对非编码人员更友好吗?

谢谢!

+0

无论您使用Power Query还是VBA中的ADO,都需要安装Oracle客户端。这是数据库连接所必需的。至于编辑SQL,您可以将查询存储在工作表上(如果需要,隐藏),可以轻松调整它们。 –

回答

1

这可能只能用PowerQuery解决,不需要VBA。我不建议你将查询存储在Excel表格中,最好的办法是将它移动到服务器上。视图或功能将是适合的。查询数据库,编辑该视图/功能仅适用于仅允许用户。 这更安全,只需要1个Excel工作簿。在PowerQuery中,您可以在刷新它时引用表的旧副本,因此可以保留输入的数据并获取新的数据。

您的项目在我看来是一种特别的解决方案。

+0

你是对的,解决方案是特设的。我主要需要一种简单的方法让分析人员在将来转移到新数据库时更改TNS信息。我不会在那里,他们很可能很难让其他人改变这种状况。 –

+0

如果我保持PowerQuery,我可以使用vba复制查询表,添加下拉日期范围过滤器和刷新按钮? 有没有办法在PowerQuery中不使用vb​​a来完成所有这些? –

+0

@JonStarnes PowerQuery通常是一个表的数据源,所以你可以对结果表做任何你想做的事情,但记住它会刷新(添加和删除行)。只需为您需要的列添加命名范围即可。 – Eugene