ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > Excel VBA > 如何判断相同名称货物是否进出异常?

如何判断相同名称货物是否进出异常?

作者:绿色风 分类: 时间:2022-08-17 浏览:101
楼主
liuguansky
Q:出货情况表示:0表示无出货,1表示有出货;
名称列的数据不一样, 要求相同名称的进行对比;
如果出货情况为0的时候,对比日期列;
如果相同名称的数据此0值日期后的记录有出货(1值),返回(“先入先出异常”).
A:用如下代码可以实现:
工作表更改事件:

  1. Private Sub Worksheet_Change(ByVal Target As Range) '工作表更改事件
  2.     If Target.Cells.Count = 1 Then
  3.         If Target.Column = 1 Or Target.Column = 7 Then '如果1,7列变更的话
  4.             Dim j&
  5.             j = Target.Row
  6.             If Cells(j, "g") = 1 Then '如果变更记录的出货情况为1,则进行判断
  7.                 Dim i&, arr
  8.                 arr = Cells(2, 1).Resize(j - 2, 7).Value '对之前为0的同名称记录进行判断
  9.                 For i = 1 To j - 2
  10.                     If arr(i, 1) = Target.Value And arr(i, 7) = 0 Then
  11.                         Cells(i + 1, "h") = "先入先出异常"
  12.                     End If
  13.                 Next
  14.             End If
  15.         End If
  16.     End If
  17. End Sub

模块代码:

  1. Sub sosogirl()
  2.     Dim arr, k&, i&, d As New Dictionary, arrt() '定义变量
  3.     With Sheet1
  4.         k = .Cells(.Rows.Count, 1).End(3).Row - 1 '获取待判断区域,并赋予数组
  5.         arr = .Range("a2").Resize(k, 7).Value
  6.         ReDim arrt(1 To k, 1 To 1)
  7.         For i = 1 To k '循环数组
  8.             If arr(i, 7) = 1 Then '对出货情况为1的进行字典赋值
  9.                 d(arr(i, 1)) = i
  10.             End If
  11.         Next i
  12.         'Debug.Print Join(d.Items, " ")
  13.         For i = 1 To k '再次循环
  14.             If arr(i, 7) = 0 And i < d(arr(i, 1)) Then '如果出货情况为0,且后于最后一次出货,则返回异常
  15.             'i < IIf(d.Exists(arr(i, 1)), d(arr(i, 1)), 0)
  16.                 arrt(i, 1) = "先入先出异常"
  17.             End If
  18.         Next i
  19.         .Range("h2:h" & Rows.Count).ClearComments
  20.         .Range("h2").Resize(k, 1) = arrt
  21.     End With
  22. End Sub

工作簿打开事件:

  1. Private Sub Workbook_Open() '打开时运行SOSOGIRL
  2.     Call sosogirl
  3. End Sub



2楼
eliane_lei
V白,进来学习

免责声明

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

评论列表
sitemap