【发布时间】:2021-08-08 08:15:17
【问题描述】:
我正在尝试在 Excel 文件中按 SQL 语句执行分组。下面是excel表格。如何通过 VBA 通过 SQL 语句执行简单的分组以获取结果。
最终结果如下所示,
PS - 我不想使用 Pivot、Power 查询等方法。我需要在 excel 文件中使用 VBA 和 SQL。
示例 02 -
我在下面找到了简单的例子, https://stackoverflow.com/a/45720915/5002322
我尝试复制这个,以便我可以使用相同的方法解决我的问题并感受一下。
使用示例 02
在这里我创建了一个名为“Book11.xlsx”的新excel文件并保存。
我在“Sheet2”中添加了 A1 = 1、A2 = 2 和 A3 = 3 的值。
创建了一个excel宏并在下面的代码中使用。
Public Sub OverkillSum()
Dim connection As Object
Set connection = CreateObject("ADODB.Connection")
connection.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & ThisWorkbook.FullName & ";" & _
"Extended Properties=""Excel 8.0;HDR=Yes;"";"
Dim recordset As Object
Set recordset = connection.Execute("SELECT SUM(Values) As Total FROM [Sheet2$]")
Sheet1.Range("A4").Value = recordset.Fields("Total").Value
recordset.Close
connection.Close
End Sub
当我运行宏时,我收到一条错误消息 “没有为一个或多个必需参数指定值”
我的excel文件表
【问题讨论】:
-
您不能使用 SQL 从 Excel 中查询 Excel 电子表格。请改用 PowerQuery。可以说,PowerQuery 比 SQL 更好,只是需要一些时间来适应。它也是第一个用于构建实际上并不可怕的查询的 GUI 编辑器(还有其他人记得
MSQUERY吗?) -
谢谢。我在读到我们可以使用 ADODB.Connection 来做到这一点,但我不明白。我想按功能自动化分组。我试图记录宏以使用电源查询,但似乎它没有以这种方式集成。我们可以使用 Power Query 将其自动化吗?
-
是的,可以通过ADODB 进行。你尝试了什么,你在哪里卡住了?
-
@Storax 我尝试通过这个简单的示例来查看它是否有效stackoverflow.com/a/45720915/5002322 在这里我创建了一个名为“Book11.xlsx”的新 Excel 文件并保存了它。我在“Sheet2”中添加了 A1 = 1、A2 = 2 和 A3 = 3 的值。创建了一个 excel 宏并将其中的代码复制过去。当我运行宏时,我收到一条错误消息“没有为一个或多个必需参数提供值”
-
请相应地编辑您的帖子