ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 指定列有数值时跨表多列值相乘并按条件求和填入对应列

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-12-13 08:59 | 显示全部楼层 |阅读模式
各位大神:
   附表中,1.当sheet1中本次计划数量不等于空的情况下,将对应的年度计划数量写入sheet2对应的M列,周计划数量写入sheet2的O列,2.统计的规则是sheet1年度计划数量/周度计划数量*sheet3里对应的材料数量(依据所属车间),然后按材料编码进行汇总后填入sheet2对应列,例如:TH本次计划数量为100,ZP本次计划数量为200,则材料01在sheet2里H列(需求数量)为=100*100+200*200=50000,M列(年度生产数量)=100*500+300*200=110000,O列(周度生产数量)=20*100+50*200=17000,ZP本次计划数量为0,则不统计汇总。
     望各位有经验的多多指教。万分感谢!

指定列有数值时跨表多列值相乘并按条件求和填入对应列.xlsm.zip

16.17 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2022-12-13 09:39 | 显示全部楼层
表1和表2拿什么去匹配的?唯一有关联的只有产材料01,而这个在表1中有二个车间同时有。
感觉无从下手。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-13 10:14 | 显示全部楼层
ykcbf1100 发表于 2022-12-13 09:39
表1和表2拿什么去匹配的?唯一有关联的只有产材料01,而这个在表1中有二个车间同时有。
感觉无从下手。

sheet1里A列到D列才是统计的数据,后面的的都是举例说明计算过程的。计算过程其实就是当sheet1里的B列不不空时,则拿B列、C列、D列的数同时去乘sheet3里车间对应的所有材料,然后再把3个乘积的分别按编码进行求和,填入sheet2对应的列里。
iShot_2022-12-13_10.13.30.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-13 10:17 | 显示全部楼层
ykcbf1100 发表于 2022-12-13 09:39
表1和表2拿什么去匹配的?唯一有关联的只有产材料01,而这个在表1中有二个车间同时有。
感觉无从下手。

只考虑B列值乘积汇总的代码如下,就是增加两列我不知道怎么修改:
Sub test()
    Dim arr, brr, dic As Object, d As Object, d1 As Object
    Dim i&, j&, k, crr, temp$, num&, ik, sm, n
    arr = Sheet3.Range("A1").CurrentRegion
    crr = Sheet1.Range("A1").CurrentRegion.Resize(, 4)
    Set dic = CreateObject("scripting.dictionary")
    Set d = CreateObject("scripting.dictionary")
    Set d1 = CreateObject("scripting.dictionary")
    ReDim brr(1 To 6)
    For i = 2 To UBound(arr)
        If Not dic.exists(arr(i, 2)) Then
            For j = 2 To UBound(arr, 2) - 4
                brr(j - 1) = arr(i, j)
            Next
            d1(arr(i, 2)) = brr
            Set dic(arr(i, 2)) = CreateObject("scripting.dictionary")
        End If
        dic(arr(i, 2))(arr(i, 1)) = arr(i, 10)
    Next i
    For i = 2 To UBound(crr)
        d(crr(i, 1)) = crr(i, 4)
    Next i
    ReDim brr(1 To dic.Count, 1 To 8)
    For i = 0 To dic.Count - 1
        temp = dic.keys()(i)
        For Each k In dic(temp).keys
            sm = sm + d(k) * dic(temp)(k)
        Next k
        If sm > 0 Then
            n = n + 1
            brr(n, 8) = sm
            For Each ik In d1(temp)
                num = num + 1
                brr(n, num) = ik
            Next ik
            num = 0
            sm = 0
        End If
    Next i
    Sheet2.[a2:h10000].ClearContents
    Sheet2.[a2].Resize(UBound(brr), UBound(brr, 2)) = brr
    Set dic = Nothing
    Set d = Nothing
    Set d1 = Nothing
End Sub

TA的精华主题

TA的得分主题

发表于 2022-12-13 10:36 | 显示全部楼层
表1中没有“产材料”名称的数据,所以不能确定就是产材料01,也可能是产材料02

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-13 10:55 | 显示全部楼层
蓝桥玄霜 发表于 2022-12-13 10:36
表1中没有“产材料”名称的数据,所以不能确定就是产材料01,也可能是产材料02

蓝版主,sheet1里A列到D列才是统计的数据,后面的的都是举例说明计算过程的。计算过程如图所示。
iShot_2022-12-13_10.13.30.png

TA的精华主题

TA的得分主题

发表于 2022-12-13 10:59 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-12-13 11:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2022-12-13 11:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 fzxba 于 2022-12-13 15:57 编辑
  1. Sub test1()
复制代码

补_10楼附件两种写法.rar

34.32 KB, 下载次数: 2

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-12-13 11:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 anline1739 于 2022-12-13 14:01 编辑

非常感谢,原表运算就是我要的结果。,但是,若在sheet1与sheet3增加明细,如新附件,运算的结果就不对,例如我增加了HL车间的材料明细,然后清除原本所有的本次计划数量,只有HL的本次计划数量,但是sheet2里还是会有原本TH、ZP运算材料,只是数量都为空值了。若我只想在sheet2里只有HL的结果,就是每次运算不留有上次运算结算,只留有本次计划数量有数值的结果,应该如何改呢?

指定列有数值时跨表多列值相乘并按条件求和填入对应列221213.zip

24.36 KB, 下载次数: 2

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

本版积分规则

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

GMT+8, 2024-11-20 09:42 , Processed in 0.046614 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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