Excel精英培训网

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

[已解决]高手帮忙,完善最后一个功能

[复制链接]
发表于 2014-3-20 11:30 | 显示全部楼层 |阅读模式
QQ截图20140320111734.png
        这是之前自己在别人帮助下制作的简单仓库管理软件,设计的时候考虑不周,仅能自动统计入库的总额,现在需要增加出库、库存的总额,因为涉及到数组,请求大神帮忙{:091:}
最佳答案
2014-3-20 15:40
  1. Private Sub CommandButton1_Click()
  2.     Dim arr, brr, Crr
  3.     Dim i&, j&, k&, iRow
  4.     Dim d As Object
  5.         Set d = CreateObject("scripting.dictionary")
  6.         arr = Sheets("入库").[a1].CurrentRegion
  7.         brr = Sheets("出库").[a1].CurrentRegion
  8.         ReDim Crr(1 To UBound(arr) + UBound(brr), 1 To 11)
  9.         For i = 2 To UBound(arr)
  10.             gg = arr(i, 8)    '类别材质规格
  11.             If Not d.Exists(gg) Then
  12.                 n = n + 1
  13.                 d(gg) = n
  14.                 Crr(n, 1) = n
  15.                 Crr(n, 2) = gg
  16.             End If
  17.             p = d(gg)
  18.             Crr(p, 3) = Crr(p, 3) + arr(i, 9)
  19.             Crr(p, 4) = Crr(p, 4) + arr(i, 10)
  20.             Crr(p, 5) = Crr(p, 5) + arr(i, 12)
  21.             
  22.             Crr(p, 9) = Crr(p, 9) + arr(i, 9)   '库存(入库相加)
  23.             Crr(p, 10) = Crr(p, 10) + arr(i, 10)
  24.             Crr(p, 11) = Crr(p, 11) - arr(i, 12)   '库存总额(入库相减)
  25.         Next
  26.         
  27.         For i = 2 To UBound(brr)
  28.             gg = brr(i, 9)    '类别材质规格
  29.             If Not d.Exists(gg) Then
  30.                 n = n + 1
  31.                 d(gg) = n
  32.                 Crr(n, 1) = n
  33.                 Crr(n, 2) = gg
  34.             End If
  35.             p = d(gg)
  36.             Crr(p, 6) = Crr(p, 6) + brr(i, 10)
  37.             Crr(p, 7) = Crr(p, 7) + brr(i, 11)
  38.             Crr(p, 8) = Crr(p, 8) + brr(i, 13)
  39.             Crr(p, 9) = Crr(p, 9) - brr(i, 10)   '库存(出库相减)
  40.             Crr(p, 10) = Crr(p, 10) - brr(i, 11)
  41.             Crr(p, 11) = Crr(p, 11) + brr(i, 13)   '库存总额(出库相加)
  42.         Next
  43.                
  44.         For i = 1 To UBound(Crr)         '如果库存为0,保留计算总额,否则总额为0
  45.             If Crr(i, 10) > 0 Then Crr(i, 11) = 0
  46.         Next
  47.                
  48.         With Sheets("统计")
  49.             .Range("A3:K1500").ClearContents
  50.             .Range("A3").Resize(n, 11) = Crr
  51.         End With
  52. End Sub
复制代码

仓库管理软件.zip

49.3 KB, 下载次数: 11

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-3-20 15:40 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub CommandButton1_Click()
  2.     Dim arr, brr, Crr
  3.     Dim i&, j&, k&, iRow
  4.     Dim d As Object
  5.         Set d = CreateObject("scripting.dictionary")
  6.         arr = Sheets("入库").[a1].CurrentRegion
  7.         brr = Sheets("出库").[a1].CurrentRegion
  8.         ReDim Crr(1 To UBound(arr) + UBound(brr), 1 To 11)
  9.         For i = 2 To UBound(arr)
  10.             gg = arr(i, 8)    '类别材质规格
  11.             If Not d.Exists(gg) Then
  12.                 n = n + 1
  13.                 d(gg) = n
  14.                 Crr(n, 1) = n
  15.                 Crr(n, 2) = gg
  16.             End If
  17.             p = d(gg)
  18.             Crr(p, 3) = Crr(p, 3) + arr(i, 9)
  19.             Crr(p, 4) = Crr(p, 4) + arr(i, 10)
  20.             Crr(p, 5) = Crr(p, 5) + arr(i, 12)
  21.             
  22.             Crr(p, 9) = Crr(p, 9) + arr(i, 9)   '库存(入库相加)
  23.             Crr(p, 10) = Crr(p, 10) + arr(i, 10)
  24.             Crr(p, 11) = Crr(p, 11) - arr(i, 12)   '库存总额(入库相减)
  25.         Next
  26.         
  27.         For i = 2 To UBound(brr)
  28.             gg = brr(i, 9)    '类别材质规格
  29.             If Not d.Exists(gg) Then
  30.                 n = n + 1
  31.                 d(gg) = n
  32.                 Crr(n, 1) = n
  33.                 Crr(n, 2) = gg
  34.             End If
  35.             p = d(gg)
  36.             Crr(p, 6) = Crr(p, 6) + brr(i, 10)
  37.             Crr(p, 7) = Crr(p, 7) + brr(i, 11)
  38.             Crr(p, 8) = Crr(p, 8) + brr(i, 13)
  39.             Crr(p, 9) = Crr(p, 9) - brr(i, 10)   '库存(出库相减)
  40.             Crr(p, 10) = Crr(p, 10) - brr(i, 11)
  41.             Crr(p, 11) = Crr(p, 11) + brr(i, 13)   '库存总额(出库相加)
  42.         Next
  43.                
  44.         For i = 1 To UBound(Crr)         '如果库存为0,保留计算总额,否则总额为0
  45.             If Crr(i, 10) > 0 Then Crr(i, 11) = 0
  46.         Next
  47.                
  48.         With Sheets("统计")
  49.             .Range("A3:K1500").ClearContents
  50.             .Range("A3").Resize(n, 11) = Crr
  51.         End With
  52. End Sub
复制代码
回复

使用道具 举报

发表于 2014-3-20 13:35 | 显示全部楼层
  1. Private Sub CommandButton1_Click()
  2.     Dim arr, brr, Crr
  3.     Dim i&, j&, k&, iRow
  4.     Dim d As Object
  5.         Set d = CreateObject("scripting.dictionary")
  6.         arr = Sheets("入库").[a1].CurrentRegion
  7.         brr = Sheets("出库").[a1].CurrentRegion
  8.         ReDim Crr(1 To UBound(arr) + UBound(brr), 1 To 11)
  9.         For i = 2 To UBound(arr)
  10.             gg = arr(i, 8)    '类别材质规格
  11.             If Not d.Exists(gg) Then
  12.                 n = n + 1
  13.                 d(gg) = n
  14.                 Crr(n, 1) = n
  15.                 Crr(n, 2) = gg
  16.             End If
  17.             p = d(gg)
  18.             Crr(p, 3) = Crr(p, 3) + arr(i, 9)
  19.             Crr(p, 4) = Crr(p, 4) + arr(i, 10)
  20.             Crr(p, 5) = Crr(p, 5) + arr(i, 12)
  21.             
  22.             Crr(p, 9) = Crr(p, 9) + arr(i, 9)   '库存(入库相加)
  23.             Crr(p, 10) = Crr(p, 10) + arr(i, 10)
  24.             Crr(p, 11) = Crr(p, 11) + arr(i, 12)
  25.         Next
  26.         
  27.         For i = 2 To UBound(brr)
  28.             gg = brr(i, 9)    '类别材质规格
  29.             If Not d.Exists(gg) Then
  30.                 n = n + 1
  31.                 d(gg) = n
  32.                 Crr(n, 1) = n
  33.                 Crr(n, 2) = gg
  34.             End If
  35.             p = d(gg)
  36.             Crr(p, 6) = Crr(p, 6) + brr(i, 10)
  37.             Crr(p, 7) = Crr(p, 7) + brr(i, 11)
  38.             Crr(p, 8) = Crr(p, 8) + brr(i, 13)
  39.             Crr(p, 9) = Crr(p, 9) - brr(i, 10)   '库存(出库相减)
  40.             Crr(p, 10) = Crr(p, 10) - brr(i, 11)
  41.             Crr(p, 11) = Crr(p, 11) - brr(i, 13)
  42.         Next
  43.                
  44.         With Sheets("统计")
  45.             .Range("A3:K1500").ClearContents
  46.             .Range("A3").Resize(n, 11) = Crr
  47.         End With
  48. End Sub
复制代码
回复

使用道具 举报

发表于 2014-3-20 13:36 | 显示全部楼层
重新改了下代码。请看附件。

仓库管理软件.rar

38.34 KB, 下载次数: 26

回复

使用道具 举报

 楼主| 发表于 2014-3-20 13:59 | 显示全部楼层
grf1973 发表于 2014-3-20 13:36
重新改了下代码。请看附件。

QQ截图20140320135747.png
十分感谢,功能已经实现。计算公式有个错误,可能麻烦修正下。库存统计中的总额应该=出库统计中的总额-入库统计中的总额,因为卖出去的价格比进货的价格要高,不然结果都是为负数了。{:041:}
回复

使用道具 举报

发表于 2014-3-20 14:52 | 显示全部楼层
我想这是不对的。应该是库存吨数*入库单价才对。如果=出库统计中的总额-入库统计中的总额的话,要是没有出库,那岂不是后面的都是负数?
回复

使用道具 举报

发表于 2014-3-20 14:54 | 显示全部楼层
看你库存统计中的总额该怎么理解,如果是统计取得成本的话,那就是库存吨数*入库单价;如果是统计预期出库收入的话,那就是库存吨数*出库单价。
回复

使用道具 举报

发表于 2014-3-20 14:57 | 显示全部楼层
如果只要把 库存统计中的总额=出库统计中的总额-入库统计中的总额 的话,那二楼代码中22、23、24行的“+”改成“-”号,39、40、41行的“-”改成“+”号。
回复

使用道具 举报

 楼主| 发表于 2014-3-20 15:21 | 显示全部楼层
grf1973 发表于 2014-3-20 14:52
我想这是不对的。应该是库存吨数*入库单价才对。如果=出库统计中的总额-入库统计中的总额的话,要是没有出库 ...

我仔细思考了下您提出的问题,确实存在。您提的两条建议我想了一下,似乎都难以实现,因为无论是库存吨位*进价或者售价,都不好操作,因为进价和售价都是波动的。您看能不能加上这样一个条件,当出库数量等于入库数量,即库存为零时,计算出库额与入库额的差额,等于我一批货卖完了,清算净赚多少
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-15 15:40 , Processed in 0.472644 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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