ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 仓储费用核算

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-3-6 16:35 | 显示全部楼层 |阅读模式
本帖最后由 记de幸福 于 2020-3-6 16:52 编辑

因公司仓库做仓储费用管理,每批货物进仓前面7天免仓储费,过7天后开始计算费用;
比如第一批12月1日进仓的货结存仓储费用在12月8日起算,第二批进仓的货物仓储费在12月13日起算,但是要加上前面批次结存的费用。
仓储费用:0.01元/件
请各位大神帮帮忙,如何用VBA实现自动统计出仓储费,谢谢了

仓储费用核算表1.rar

9.76 KB, 下载次数: 13

TA的精华主题

TA的得分主题

发表于 2020-3-6 16:45 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
你也不模拟几个结果示例出来,,,

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-6 16:51 | 显示全部楼层
opel-wong 发表于 2020-3-6 16:45
你也不模拟几个结果示例出来,,,

不好意思,我马上改

仓储费用核算表1.rar

9.76 KB, 下载次数: 15

TA的精华主题

TA的得分主题

发表于 2020-3-6 20:20 | 显示全部楼层
本帖最后由 一指禅62 于 2020-3-6 20:28 编辑

可能我的理解错误,计算结果(268元)与原贴计算结果(322元)不符。

供楼主参考。

代码计算结果.png

枚举计算结果.png

原贴计算结果.png


TA的精华主题

TA的得分主题

发表于 2020-3-6 20:23 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 一指禅62 于 2020-3-6 23:18 编辑
  1. Sub 计算仓储费()
  2.     Const Tmax = 7 - 1 '超过7天开始计费
  3.     Dim t As Date, ds, i&, a(), x%
  4.     Dim d As Object, s$, m%, n%
  5.     t = Sheet2.Range("B2").Value
  6.     ds = Sheet1.Range("A1").CurrentRegion
  7.     Set d = CreateObject("Scripting.Dictionary")
  8.     For i = 2 To UBound(ds)
  9.         If ds(i, 8) <> "" Then '批次号
  10.             s = Trim(ds(i, 2)) & "|" & Trim(ds(i, 8))   '品名+批次
  11.             If Not d.Exists(s) Then
  12.                 n = n + 1: ReDim Preserve a(1 To 3, 1 To n)
  13.                 d(s) = n
  14.                 a(1, n) = ds(i, 1) + Tmax  '初始取费日期
  15.                 a(2, n) = ds(i, 5)
  16.             Else
  17.                 If ds(i, 1) < t Then '当前计费期间内
  18.                     m = d.Item(s)
  19.                     x = DateDiff("d", a(1, m), ds(i, 1)) - 1 ' '计费天数
  20.                     If x > 0 Then
  21.                         a(1, m) = ds(i, 1) - 1  '更新计费日期
  22.                         a(3, m) = a(3, m) + a(2, m) * x * 0.01
  23.                         'Debug.Print s, x
  24.                     End If
  25.                     a(2, m) = a(2, m) - ds(i, 6)   '结存数量
  26.                     
  27.                 End If
  28.             End If
  29.         End If
  30.     Next
  31.    
  32.     Sheet2.Range("A4:C10000").ClearContents
  33.     If n = 0 Then Exit Sub
  34.     Dim k, Sm
  35.     ReDim temp(1 To d.Count)
  36.     n = 0
  37.     For Each k In d.keys
  38.         n = n + 1
  39.         m = d.Item(k)
  40.         x = DateDiff("d", a(1, m), t)  '计费天数
  41.         'Debug.Print k, x
  42.         temp(n) = a(3, m) + IIf(x > 0, a(2, m) * x * 0.01, 0)
  43.         Sm = Sm + temp(n)
  44.     Next
  45.     With Sheet2
  46.         .Range("A4").Resize(n, 2) = WorksheetFunction.Transpose(d.keys)
  47.         .Range("A:A").Replace "|*", ""
  48.         .Range("B:B").Replace "*|", ""
  49.         .Range("C4").Resize(n, 1) = WorksheetFunction.Transpose(temp)
  50.     End With
  51.     With Sheet2.Range("C10000").End(3)
  52.         .Offset(1, -2) = "合计"
  53.         .Offset(1, 0) = Sm
  54.     End With
  55. End Sub
复制代码

仓储费用核算表.zip

23.26 KB, 下载次数: 36

TA的精华主题

TA的得分主题

发表于 2020-3-6 20:31 | 显示全部楼层
数据不多就用数据透视表吧

TA的精华主题

TA的得分主题

发表于 2020-3-6 20:35 | 显示全部楼层
如果我的理解正确,数据表可以优化(符合数据管理的一般模式)

数据表.png



TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-6 22:37 | 显示全部楼层
zzj198237 发表于 2020-3-6 20:31
数据不多就用数据透视表吧

谢谢了,数据很多,这款只是96款品种的其中一样,每款进出都很频繁

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-3-6 22:50 | 显示全部楼层
一指禅62 发表于 2020-3-6 20:35
如果我的理解正确,数据表可以优化(符合数据管理的一般模式)

谢谢老师,是这个思路,但是代码运行统计起来每个批次的结存天数会差1天
第一批2019/12/01-2019/12/07   7天  免费 货物结余 1800
第一批2019/12/08-2019/12/09   2天  货物结余 1200*0.02=24
第一批2019/12/10-2019/12/20    11天  货物结余 700*0.11=77
第二批2019/12/06-2019/12/12    7天 免费  货物结余 1800
第二批2019/12/13-2019/12/20    8天  货物结余1800*0.08*144
第三批2019/12/11-2019/12/17    7天 免费 货物结余1800
第三批2019/12/18-2019/12/20    3天  货物结余 1800*0.03=54
合计:299      我原本的表格计算错了

TA的精华主题

TA的得分主题

发表于 2020-3-6 23:20 | 显示全部楼层
记de幸福 发表于 2020-3-6 22:50
谢谢老师,是这个思路,但是代码运行统计起来每个批次的结存天数会差1天
第一批2019/12/01-2019/12/07   ...

附件已更新(在审核),请重新下载测试。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

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

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

GMT+8, 2024-4-26 13:25 , Processed in 0.049872 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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