网站大量收购独家精品文档,联系QQ:2885784924

ExcelVBA用字典方法做先进先出法.pdf

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ExcelVBA⽤字典⽅法做先进先出法 多年前,⼀家外包公司帮我司⼀物业公司做仓库收发存管理软 ,我⽅要求先进先出法,该外包公司称那需要加⼊批次管理,每次出库选择 好批次才能实现先进先出。我以为,这完全是谬论,既然是先进先出,那就已经设定好了规律和逻辑,不需要再指定批次,否则那还叫什么 先进先出。最近,闲来⽆事,⽤EXCEL编了个⼩程序,经调试,是可以做到先进先出的。上图: 备注 :出⼊库按⼊正出负的原则制订 完整代码 : Public Crr() As Integer, StartingPosition% Sub First InFirstOut() Dim Arr, Brr, Drr, i%, ypeCount%, j%, MaxAmount% Dim Dic As Object Set Dic = CreateObject(scripting.dictionary) Arr = [A1].CurrentRegion 按字典⽅法,获取产品种类 For i = 2 o UBound(Arr) If Arr(i, 2) = 0 hen Dic(Arr(i, 1)) = Dic(Arr(i, 1)) + Arr(i, 2) End If Next ypeCount = Dic.Count Brr = Dic.Keys Drr = Dic.Items 获取进货的总数量 MaxAmount = Application.WorksheetFunction.Max(Drr) ReDim Crr(1 o ypeCount, 1 o MaxAmount) For i = 2 o UBound(Arr) If Arr(i, 2) 0 hen For j = 0 o ypeCount - 1 If Brr(j) = Arr(i, 1) hen If Arr(i, 2) 0 hen If Arr(i, 2) 0 hen ⽬标Crr,第⼀维度为j+1,第⼆维度的数量 :cells (i,2) ,第⼆维度的单价 :cells(i,3) Call GetStartingPosition(j + 1) Call AddDate(j + 1, Val(Arr(i, 2)), Val(Arr(i, 3))) Exit For Else Call DeleteDate(j + 1, Val(Arr(i, 2)), i) Exit For End If End If Next End If Next End Sub Sub GetStartingPosition(i As Integer) For k = 1 o UBound(Crr, 2) If Crr(i, k) = Empty Or Crr(i, k) = 0 hen StartingPosition = k Exit For End If Next End Sub Sub AddDate(i%, j%, k%) For x = StartingPosition

文档评论(0)

135****0879 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档