ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何返回零件号数量的汇总明细,同时对重复零件号进行提示?

如何返回零件号数量的汇总明细,同时对重复零件号进行提示?

作者:绿色风 分类: 时间:2022-08-17 浏览:91
楼主
liuguansky
Q:零件名的数量是多个数量的加和,现在在返回各加和的明细,并且如果零件号有重复,进行提示
A:用如下事件代码可以实现:
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2. If Target.Cells.Count = 1 Then
  3.     '判断是否变动 单元格数为1
  4.     If Not Application.Intersect(Target, Range("c:c")) Is Nothing Then
  5.         '判断是否为C列变动
  6.         Dim d, i&, dErr, Arr, Ar, StrF$, k As Byte
  7.         '定义变量
  8.         Set d = CreateObject("scripting.dictionary")
  9.         '创建字典项目,用于零件号惟一
  10.         Set dErr = CreateObject("scripting.dictionary")
  11.         '创建字典项目,用于重复零件号惟一
  12.         Arr = Range("A2:b" & Cells(Rows.Count, 1).End(3).Row).Value
  13.         '获取数据源
  14.         For i = 1 To UBound(Arr, 1)
  15.             '循环数据源
  16.             If d.exists(Arr(i, 1)) Then
  17.                 '如果存在零件号
  18.                 dErr(Arr(i, 1)) = ""
  19.                 '添加至重复零件号字典项目
  20.             Else
  21.                 d.Add Arr(i, 1), i '否则添加零件号至字典项目,ITEM为行号
  22.             End If
  23.         Next i
  24.         If d.exists(Target.Value) Then '判断变动零件号是否存在
  25.         StrF = Cells(1 + d(Target.Value), 2).Formula '返回工作结果
  26.         Ar = Split(Replace(StrF, "=", ""), "+") '获取加项
  27.         If IsArray(Ar) Then
  28.             k = UBound(Ar) + 1
  29.         Else
  30.             k = 1
  31.         End If
  32.         Range(Target.Offset(0, 1), Cells(Target.Row, Columns.Count)).ClearContents
  33.         Target.Offset(0, 1).Resize(1, k).Value = Ar '返回加项结果
  34.     Else
  35.         Target.Offset(0, 1).Value = "未找到相关零件号。" '否则,提示未找到零件号
  36.     End If
  37.     If dErr.Count > 0 Then MsgBox "如下零件号存在重复记录,请核实:" & vbNewLine & Join(dErr.keys, ",")
  38.     '如果存在重复零件号,则进行提示
  39. End If
  40. End If
  41. End Sub
2楼
JOYARK1958
謝謝提供學習下載中

免责声明

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

评论列表
sitemap