ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何VBA 统计库存

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-4-29 07:43 | 显示全部楼层 |阅读模式
因每天都要处理大量数据,用公式函数卡慢不堪,所以向各位大神请教如何用VBA统计库存,具体要求写在库存表里,谢谢各位。

新建 Microsoft Office Excel 2007 工作表.rar

11.96 KB, 下载次数: 100

TA的精华主题

TA的得分主题

发表于 2017-4-29 08:14 | 显示全部楼层
当你学习了字典后,这问题变得很简单

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-29 09:00 | 显示全部楼层
840205910 发表于 2017-4-29 08:14
当你学习了字典后,这问题变得很简单

那该如何编码?大神可否帮忙?

TA的精华主题

TA的得分主题

发表于 2017-4-29 10:27 | 显示全部楼层
新建 Microsoft Office Excel 2007 工作表.zip (25.6 KB, 下载次数: 183)

TA的精华主题

TA的得分主题

发表于 2017-4-29 10:28 | 显示全部楼层
Private Sub CommandButton1_Click()

    Set d = CreateObject("scripting.dictionary")
    Arr = Sheet2.Range("a4:m" & Sheet2.[a65536].End(xlUp).Row)
    ReDim brr(1 To UBound(Arr), 1 To 4)
    For i = 1 To UBound(Arr)
        s = Arr(i, 7) & vbTab & Arr(i, 8) & vbTab & Arr(i, 9)
        If Not d.Exists(s) Then
            m = m + 1
            d(s) = ""
            brr(m, 1) = m
            brr(m, 2) = Arr(i, 7)
            brr(m, 3) = Arr(i, 8)
            brr(m, 4) = Arr(i, 9)
           
        End If
    Next
    Range("a4:d100") = ""
    [a4].Resize(m, 4) = brr
End Sub

TA的精华主题

TA的得分主题

发表于 2017-4-29 10:29 | 显示全部楼层
Private Sub CommandButton2_Click()
Set d = CreateObject("scripting.dictionary")
Set d1 = CreateObject("scripting.dictionary")
    Arr = Sheet2.Range("a4:m" & Sheet2.[a65536].End(xlUp).Row)
    For i = 1 To UBound(Arr)
    s = Arr(i, 7) & vbTab & Arr(i, 8) & vbTab & Arr(i, 9)
    d(s) = d(s) + Arr(i, 10)
    Next
    brr = Sheet3.Range("a4:m" & Sheet3.[a65536].End(xlUp).Row)
    For i = 1 To UBound(brr)
    m = brr(i, 7) & vbTab & brr(i, 8) & vbTab & brr(i, 9)
    d1(m) = d1(m) + brr(i, 10)
    Next
crr = Sheet1.Range("a4:h" & Sheet1.[a65536].End(xlUp).Row)
For i = 1 To UBound(crr)
crr(i, 6) = d(crr(i, 2) & vbTab & crr(i, 3) & vbTab & crr(i, 4))
crr(i, 7) = d1(crr(i, 2) & vbTab & crr(i, 3) & vbTab & crr(i, 4))
crr(i, 8) = crr(i, 5) + crr(i, 6) - crr(i, 7)

Next
[a4].Resize(UBound(crr), UBound(crr, 2)) = crr
End Sub

TA的精华主题

TA的得分主题

发表于 2017-4-29 11:03 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-29 11:19 | 显示全部楼层
840205910 发表于 2017-4-29 10:29
Private Sub CommandButton2_Click()
Set d = CreateObject("scripting.dictionary")
Set d1 = CreateObj ...

大神,刚才那组代码我试过了,有新增项目后,点击按钮,库存表没有变化。

TA的精华主题

TA的得分主题

发表于 2017-4-30 01:21 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-4-30 07:06 | 显示全部楼层
lzqmsy 发表于 2017-4-30 01:21
你的问题解决没有?需要再帮忙吗?

如肯帮忙,感激不尽。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-25 09:41 , Processed in 0.047044 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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