Excel精英培训网

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

请老师们用VBA帮我解决一下进销存的问题

[复制链接]
发表于 2017-6-10 14:27 | 显示全部楼层 |阅读模式
本帖最后由 gzliqiang 于 2017-6-10 14:36 编辑


周销.zip

465.23 KB, 下载次数: 33

发表于 2017-6-12 09:08 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2017-6-12 09:12 | 显示全部楼层
qcw811206 发表于 2017-6-12 09:08
这个透视表不行吗

透视还要设置格式,打印起来不方便,
回复

使用道具 举报

发表于 2017-6-12 09:14 | 显示全部楼层
gzliqiang 发表于 2017-6-12 09:12
透视还要设置格式,打印起来不方便,

蓝版的字典教程里面
可以参考下,应该可以解决

回复

使用道具 举报

发表于 2017-6-12 21:39 | 显示全部楼层
用一个字典,我是这样写的,不知一个字典还有没有别的算法
Sub aa()
Set d = CreateObject("Scripting.Dictionary")
rw = Range("a" & Rows.Count).End(3).Row
ar = Range("a2:e" & rw)
'ReDim br(1 To UBound(ar) + 2, 1 To 3 * UBound(ar) + 1),极端情况下这样,但数据大了会不会溢出???
ReDim br(1 To UBound(ar) + 2, 1 To 301) '还是给个限制,最多100个地区
ReDim cr(1 To 301)
m = 1: s = 2
For i = 1 To UBound(ar)
    r = d(ar(i, 1))
    n = d(ar(i, 2))
    If r = "" Then
        s = s + 1: d(ar(i, 1)) = s: r = s
        br(r, 1) = ar(i, 1)
    End If
    If n = "" Then
        m = m + 3: d(ar(i, 2)) = m: n = m
        br(1, n - 1) = ar(i, 2)
        br(2, n - 2) = "库存": br(2, n - 1) = "销量1": br(2, n) = "销量2"
    End If
    br(r, n - 2) = br(r, n - 2) + ar(i, 3): br(r, n - 1) = br(r, n - 1) + ar(i, 4): br(r, n) = br(r, n) + ar(i, 5)
    cr(n - 2) = cr(n - 2) + ar(i, 3): cr(n - 1) = cr(n - 1) + ar(i, 4): cr(n) = cr(n) + ar(i, 5)
Next
br(1, 1) = "行标签"
Range("j17").Resize(s, n) = br
cr(1) = "合计"
Range("j" & 17 + s).Resize(1, m) = cr
End Sub
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 19:18 , Processed in 0.802953 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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