ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 工作表多项目计算汇总,请大神帮忙

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-1-3 14:05 | 显示全部楼层 |阅读模式
要求:
1.品名:筛选1到12个工作表A列不重复值。
2.数量1:根据品名对应的1到12个工作表数量1相加
3.数量2:根据品名对应的1到12个工作表数量2相加
4.项目1:根据品名对应的(1工作表项目1*1工作表数量1)+(2工作表项目1*2工作表数量1)。。。。。。(12工作表项目1*12工作表数量1)再除于汇总表的数量1
5.项目2到16都是用上面(项目1)方法计算。(所有项目都是*各工作表的数量1)

品质.rar

1.02 MB, 下载次数: 31

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-1-4 09:23 | 显示全部楼层
请老师帮忙下,谢谢

TA的精华主题

TA的得分主题

发表于 2017-1-4 09:27 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2017-1-4 10:35 | 显示全部楼层
Sub a()
Dim sh As Worksheet, sql$, bt, i%, T$
bt = [{"品名","数量1","数量2","项目1","项目2","项目3","项目4","项目5","项目6","项目7","项目8","项目9","项目10","项目11","项目12","项目13","项目14","项目15","项目16"}]
For Each sh In Sheets
    If sh.Name < >"汇总" Then
        For i = 1 To UBound(bt)
            sql = sql & bt(i) & ","
        Next
            sql = Left(sql, Len(sql) - 1)
            sql = "SELECT " & sql & " FROM [" & sh.Name & "$A2:T] WHERE 品名 is not null UNION ALL "
    End If
        T = T & sql
        sql = ""
Next
T = Left(T, Len(T) - 11)
For i = 4 To UBound(bt)
    sql = sql & "SUM(" & bt(i) & ")/SUM(数量1),"
Next
sql = Left(sql, Len(sql) - 1)
sql = "SELECT 品名,null,SUM(数量1),SUM(数量2)," & sql & "FROM (" & T & ") " & "GROUP BY 品名"
Dim cnn As Object
Set cnn = CreateObject("ADODB.CONNECTION")
cnn.Open "Provider=Microsoft.ACE.OleDb.12.0;Extended Properties='Excel 12.0;HDR=YES'; Data Source=" & ThisWorkbook.FullName
Range("a3:z9999").ClearContents
[a3].CopyFromRecordset cnn.Execute(sql)
cnn.Close: Set cnn = Nothing
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-1-4 16:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
魂断蓝桥 发表于 2017-1-4 10:35
Sub a()
Dim sh As Worksheet, sql$, bt, i%, T$
bt = [{"品名","数量1","数量2","项目1","项目2","项目3 ...

数据计算有问题,请再帮忙修改下,谢谢了!
数量1各数量2计算没有错。
项目1、项目2.......等都是在各分表先*各自分表的数量1后再相加的,先加完了最后再除于汇总的数量1。(你是直接把各分表项目1相加再除于汇总的数量1,数据关系就变了)

TA的精华主题

TA的得分主题

发表于 2017-1-5 08:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
ptjtlt260 发表于 2017-1-4 16:07
数据计算有问题,请再帮忙修改下,谢谢了!
数量1各数量2计算没有错。
项目1、项目2.......等都是在各 ...

Sub a()
Dim sh As Worksheet, sqt1$, sqt2$, bt, i%, T$, sql$
bt = [{"品名","数量1","数量2","项目1","项目2","项目3","项目4","项目5","项目6","项目7","项目8","项目9","项目10","项目11","项目12","项目13","项目14","项目15","项目16"}]
For Each sh In Sheets
    If sh.Name <> "汇总" Then
        For i = 4 To UBound(bt)
            sqt1 = sqt1 & "数量1*" & bt(i) & "+"
        Next
            sqt1 = "(" & Left(sqt1, Len(sqt1) - 1) & ") as 数量"
                For i = 1 To UBound(bt)
                    sqt2 = sqt2 & bt(i) & ","
                Next
                    sqt2 = Left(sqt2, Len(sqt2) - 1)
                    sql = sqt1 & "," & sqt2
            sql = "SELECT " & sql & " FROM [" & sh.Name & "$A2:T] WHERE 品名 is not null UNION ALL "
    End If
        T = T & sql
        sql = "": sqt1 = "": sqt2 = ""
Next
[a3] = T
T = Left(T, Len(T) - 11)
For i = 4 To UBound(bt)
    sql = sql & "SUM(" & bt(i) & ")/SUM(数量),"
Next
sql = Left(sql, Len(sql) - 1)
sql = "SELECT 品名,null,SUM(数量1),SUM(数量2)," & sql & "FROM  (" & T & ") " & "GROUP BY 品名"
Debug.Print sql
Dim cnn As Object
Set cnn = CreateObject("ADODB.CONNECTION")
cnn.Open "Provider=Microsoft.ACE.OleDb.12.0;Extended Properties='Excel 12.0;HDR=YES'; Data Source=" & ThisWorkbook.FullName
Range("a3:z9999").ClearContents
[a3] = sql
[a3].CopyFromRecordset cnn.Execute(sql)
cnn.Close: Set cnn = Nothing
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-1-5 08:41 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-1-5 13:17 | 显示全部楼层
魂断蓝桥 发表于 2017-1-5 08:25
Sub a()
Dim sh As Worksheet, sqt1$, sqt2$, bt, i%, T$, sql$
bt = [{"品名","数量1","数量2","项目1 ...

用这个还是和上次一样,顺序应该是:
1各分表项目*各自分表的数量1(数量1不变,各项目分别*数量1)。
2.各项目都*后再12张分表相加。
以上用公式表示:(1分表项目1*1分表数量1+2分表项目1*2分表数量1+........)/汇总表数量1
项目2......也是按以上方法计算。
3.相加后再除于汇总表里面的数量1

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-1-5 13:24 | 显示全部楼层
上传附件,请帮忙大神再看下,谢谢

品质.rar

1.36 MB, 下载次数: 15

附件

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-1-5 13:57 | 显示全部楼层
你上面写的是先合并后再乘,我的要求是先乘后再合并除于汇总表里的数量1的
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-19 23:54 , Processed in 0.043633 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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