ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何依型号产地把产品按数量总和层次返回编码?

如何依型号产地把产品按数量总和层次返回编码?

作者:绿色风 分类: 时间:2022-08-17 浏览:136
楼主
liuguansky
Q:如何把产品的型号产地数量明细,按型号产地的数量层次编码表返回编码?
A:用如下代码可以实现:
  1. Sub 编码()
  2. Dim Ar, arr, i&, d, s$, Arrt() As String, j As Byte
  3. '定义变量
  4. Set d = CreateObject("scripting.dictionary")
  5. '创建字典项目
  6. Ar = Range("H2:U5").Value
  7. '引用编码信息数据
  8. For i = 1 To UBound(Ar, 1) '编码信息赋予字典项目
  9.     s = Ar(i, 1) & Ar(i, 2)
  10.     d(s) = Array(i, 0) '行号作为标识位
  11. Next i
  12. For i = 1 To UBound(Ar, 1) '重新循环,返回编码数量限定的累加
  13.     For j = 6 To UBound(Ar, 2) Step 2
  14.         If Ar(i, j) <> "" Then
  15.             Ar(i, j) = Ar(i, j - 2) + Ar(i, j)
  16.         End If
  17.     Next j, i
  18.     arr = Range("b2:d" & Cells(Rows.Count, 1).End(3).Row).Value
  19.     '获取待处理数据源
  20.     ReDim Arrt(1 To UBound(arr, 1), 1 To 1)
  21.     '定义结果数组
  22.     For i = 1 To UBound(arr, 1) '循环数据源
  23.         s = arr(i, 1) & arr(i, 2) '获取惟一标识字符串
  24.         If d.exists(s) Then '如果存在
  25.         d(s) = Array(d(s)(0), d(s)(1) + arr(i, 3)) '进行数量累加
  26.         For j = 4 To UBound(Ar, 2) Step 2 '循环编码数量
  27.             Rem 此时的循环的数量已为累加数量
  28.             If Len(Ar(d(s)(0), j)) = 0 Then
  29.                 '如果数量不存在,则直接返回最后编码,同时跳出循环
  30.                 Arrt(i, 1) = Ar(d(s)(0), j - 3)
  31.                 Exit For
  32.             End If
  33.             If d(s)(1) <= Ar(d(s)(0), j) Then '如果不大于当前累加数量,则返回当段编码
  34.             Arrt(i, 1) = Ar(d(s)(0), j - 1)
  35.             Exit For '跳出循环
  36.         End If
  37.     Next
  38. End If
  39. Next i
  40. Range("e2:e" & Rows.Count).ClearContents
  41. Range("e2").Resize(UBound(Arrt, 1), 1) = Arrt '返回结果
  42. Set d = Nothing
  43. End Sub
2楼
我的1314
謝謝提供學習下載中
3楼
JOYARK1958
謝謝提供學習下載中

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap