Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2841|回复: 2

麻烦老师们帮我看这一下这个进销存表

[复制链接]
发表于 2019-6-25 23:07 | 显示全部楼层 |阅读模式
1学分
本帖最后由 zhxj1983 于 2019-6-28 13:49 编辑

老师看下附件,表1的Q,R,Y列的数据,都是用表1 B列这个条件sumif从表3,表4,表5求和过来的,麻烦老师们看一下,用VBA来处理,后面几万条数据的时候,会非常卡。另外帮我把S列这条加减的公式也一并给写到代码里面去。

进销存表.rar

683.93 KB, 下载次数: 65

 楼主| 发表于 2019-6-26 10:06 | 显示全部楼层
回复

使用道具 举报

发表于 2019-6-27 10:06 | 显示全部楼层
代码放在第一个表里,运行大约需要5秒。
结果对不对需要你来核对,我大致上看了下感觉没问题。
Application.ScreenUpdating = False
Dim zd1
Set zd1 = CreateObject("scripting.dictionary")
For i = 2 To Worksheets("入库").[a100000].End(3).Row
    s = Trim(Worksheets("入库").Cells(i, 1))
    zd1(s) = zd1(s) + Worksheets("入库").Cells(i, "k")
Next i
Dim zd2
Set zd2 = CreateObject("scripting.dictionary")
For i = 2 To Worksheets("出库").[a100000].End(3).Row
    s = Trim(Worksheets("出库").Cells(i, 1))
    zd2(s) = zd2(s) + Worksheets("出库").Cells(i, "j")
Next i
Dim zd3
Set zd3 = CreateObject("scripting.dictionary")
For i = 2 To Worksheets("裥棉未完成数量").[a100000].End(3).Row
    s = Trim(Worksheets("裥棉未完成数量").Cells(i, 1))
    zd3(s) = zd3(s) + Worksheets("裥棉未完成数量").Cells(i, 2)
Next i
For i = 1 To [a10000].End(3).Row
    s = Trim(Cells(i, 2))
    If zd1.exists(s) Then
       Cells(i, "q") = zd1(s)
    End If
    If zd2.exists(s) Then
       Cells(i, "r") = zd2(s)
    End If
    If zd1.exists(s) Then
       Cells(i, "y") = zd3(s)
    End If
Next i
Application.ScreenUpdating = True
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-19 06:00 , Processed in 0.297186 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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