ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2354|回复: 10

请帮忙解决一个汇总问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2006-12-20 09:54 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

4BTn4sVU.rar (8.47 KB, 下载次数: 11)


请好汉帮忙解决一个汇总问题,每次我都拿计算器加来加去的,好麻烦呀。

报告又多,希望通过大家帮忙,提高一下自己的工作效率

请看附件要求。

TA的精华主题

TA的得分主题

发表于 2006-12-20 10:40 | 显示全部楼层

这个问题用数据透视表就可以解决:

EsHWBClj.rar (8 KB, 下载次数: 11)
[此贴子已经被作者于2006-12-20 10:41:00编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-20 11:36 | 显示全部楼层

谢谢STX:

我想我需要好好学习才行。对这我个功能我很不熟悉,但我的数据很多,另外我忘了把金额的统计加上去。还有更好的方法吗?我个人比较喜欢VBA,能帮帮我吗?

附件重新再上传了

9A1kBfQQ.rar (7.41 KB, 下载次数: 7)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-20 13:03 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2006-12-20 16:50 | 显示全部楼层
Private Sub CommandButton1_Click()
    Set Cnn = CreateObject("ADODB.connection")
    Cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" & ActiveWorkbook.FullName
    Sql = "TRANSFORM Sum([出货数量]) SELECT [材料编号] AS 材料编号,[型号规格] AS 型号规格 FROM " & _
            "[出货统计$A2:I" & Sheets("出货统计").[A65536].End(xlUp).Row & "] GROUP BY [材料编号],[型号规格] " & _
            "PIVOT MONTH([日期]) "
    [A4].CopyFromRecordset Cnn.Execute(Sql)
    Cnn.Close: Set Cnn = Nothing
End Sub

TA的精华主题

TA的得分主题

发表于 2006-12-20 16:55 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

老师,楼主还要对金额进行汇总,更新的附件在3楼!

这样的话,用交叉表查询好像不行,因为他要对两个字段汇总!

我试过不行!

[此贴子已经被作者于2006-12-20 16:57:57编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-20 18:06 | 显示全部楼层

爱歌,STX:

   看到你们这么热心帮我,真的很高兴。之前爱歌就帮了很多忙了,再次抱以十分的感谢!希望能再帮忙改进一下吗?我一下午就忙着做这报告呢? 我希望是数量和金额都能汇总。见三楼附件。

TA的精华主题

TA的得分主题

发表于 2006-12-20 20:42 | 显示全部楼层

这单一语句还真不行,不过以前做过一个类似的,改动了一下,还真是可以:

Private Sub CommandButton1_Click()
    Dim SQL$, sql1$, sql2$, sql3$, i%, maxrow&, t
    maxrow = Sheets("出货统计").[A65536].End(xlUp).Row
    Set CNN = CreateObject("ADODB.Connection")
    CNN.Open "provider=microsoft.jet.oledb.4.0;extended properties=Excel 8.0;data source=" & ThisWorkbook.FullName
    For i = 1 To 12
        sql1 = sql1 & "数量" & i & ",金额" & i & ","
        sql2 = sql2 & "("
        sql3 = sql3 & " left join (select 材料编号,sum(数量) as 数量" & i & ",sum(金额) as 金额" & i & _
                " from [出货统计$A2:I" & maxrow & "] where month(日期)=" & i & " group by 材料编号) as b" & i & _
                " on a.材料编号=b" & i & ".材料编号)"
    Next
    sql1 = Left(sql1, Len(sql1) - 1)
    sql2 = Left(sql2, Len(sql2) - 1)
    sql3 = Left(sql3, Len(sql3) - 1)
    SQL = "select a.材料编号,a.型号规格," & sql1 & " from (" & sql2 & "select distinct 材料编号,型号规格 " & _
            "from [出货统计$A2:I" & maxrow & "]) as a " & sql3
    [a5].CopyFromRecordset CNN.Execute(SQL)
    CNN.Close: Set CNN = Nothing
End Sub

uXvcw8mO.rar (12.91 KB, 下载次数: 38)

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-21 09:05 | 显示全部楼层

非常受用,感谢爱歌和STX的无私帮助。你们真是帮别人解决了不少工作上的麻烦。越来越喜欢EXCELHOME了

TA的精华主题

TA的得分主题

 楼主| 发表于 2006-12-21 14:23 | 显示全部楼层

请帮忙解决一个汇总问题 (请爱歌再帮忙看看)

QUOTE:
以下是引用爱歌学习在2006-12-20 20:42:40的发言:

这单一语句还真不行,不过以前做过一个类似的,改动了一下,还真是可以:

Private Sub CommandButton1_Click()
    Dim SQL$, sql1$, sql2$, sql3$, i%, maxrow&, t
    maxrow = Sheets("出货统计").[A65536].End(xlUp).Row
    Set CNN = CreateObject("ADODB.Connection")
    CNN.Open "provider=microsoft.jet.oledb.4.0;extended properties=Excel 8.0;data source=" & ThisWorkbook.FullName
    For i = 1 To 12
        sql1 = sql1 & "数量" & i & ",金额" & i & ","
        sql2 = sql2 & "("
        sql3 = sql3 & " left join (select 材料编号,sum(数量) as 数量" & i & ",sum(金额) as 金额" & i & _
                " from [出货统计$A2:I" & maxrow & "] where month(日期)=" & i & " group by 材料编号) as b" & i & _
                " on a.材料编号=b" & i & ".材料编号)"
    Next
    sql1 = Left(sql1, Len(sql1) - 1)
    sql2 = Left(sql2, Len(sql2) - 1)
    sql3 = Left(sql3, Len(sql3) - 1)
    SQL = "select a.材料编号,a.型号规格," & sql1 & " from (" & sql2 & "select distinct 材料编号,型号规格 " & _
            "from [出货统计$A2:I" & maxrow & "]) as a " & sql3
    [a5].CopyFromRecordset CNN.Execute(SQL)
    CNN.Close: Set CNN = Nothing
End Sub


你好爱歌:

      我又遇到问题,如果材料编号是数字好象程序有问题,必须要字母开头吗?

另外 [a5].CopyFromRecordset CNN.Execute(SQL) ,是什么意思呀?我用到其他表中,

就提示这句有问题。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 02:47 , Processed in 0.044610 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表