微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Excel VBA中使用SQL的“分组依据”功能对数据进行分组

如何解决在Excel VBA中使用SQL的“分组依据”功能对数据进行分组

您的代码很好;您只需要修改SQL查询

strsql = "SELECT [Table1$].[F_Number], [Table2$].[A_Country], SUM([Table1$].[A_Weight]) " & _
         "FROM [Table1$], [Table2$] " & _
         "WHERE [Table2$].[A_Number] = [Table1$].[A_Number] " & _
         "GROUP BY [Table1$].[F_Number], [Table2$].[A_Country]"

解决方法

我有两个表(1&2)应该合并到第三(3)个表中。

表1:F_Number,A_Number,
A_Weight
表2:A_Number,A_Country表3:F_Number,A_Country,A_Weight

第三表应按F_Number分组,求和A_Weight,其中A_Country具有相同的值。到目前为止,表的联接工作正常:

Dim strSQL As String
Dim Conn As New ADODB.Connection
Dim mrs As New ADODB.Recordset
Dim DBPath As String
Dim sconnect As String

DBPath = ThisWorkbook.FullName
sconnect = "Provider=MSDASQL.1;DSN=Excel Files;DBQ=" & DBPath & ";HDR=Yes';"

Conn.Open sconnect
    strSQL = "Select [Table1$].[F_Number],[Table2$].[A_Country],[Table1$].[A_Weight] From [Table1$] Inner Join [Table2$] On [Table2$].[A_Number]=[Table1$].[A_Number]"
    mrs.Open strSQL,Conn
    ActiveSheet.Range("A2").CopyFromRecordset mrs
    mrs.Close
Conn.Close

结果是一个像这样的表:

F_Number; 一个国家; A_Weight
F_1; 我们; 10%
F_1:美国;10%
F_1;英国; 80%
F_2; 英国; 100%

我希望将此表按“ A_Weight”分组,如下所示:

F_Number; 一个国家; A_Weight
F_1; 我们; 20%
F_1;英国; 80%
F_2; 英国; 100%

我对SQL不太了解,但是到目前为止,我所做的只是总结A_Weight并将结果按F_Number分组,这给了我一条错误消息。我使用的是德语办公版本,因此我只能尝试翻译错误:“自动化错误”。我仍然认为它应该像这样工作。

这是我 无法 使用的SQL-String代码:

strSQL = "Select [Table1$].[F_Number],Sum([Table1$].[A_Weight]) From [Table1$] Inner Join [Table2$] On [Table2$].[A_Number]=[Table1$].[A_Number] Group By [Table1$].[F_Number]"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。