ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 多条件,不重复项求和,如何用VBA实现,谢谢

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-4-17 17:16 | 显示全部楼层 |阅读模式
本帖最后由 gfdhgw 于 2019-4-19 16:49 编辑

订单明细表H列采购对应入库表G列订单号,订单明细表B列商品编码对应入库表B列商品编码,然后对入库表中对应F列入库数量求和,与订单明细E列发货数量对比,相同,在订单明细P表标识 入 ,不相等,列求出实际入库数量,入库表中A列作业指令出现重复,则此作业指令下面的入库数量只计算为一次(13,20行中的作业 指令一样,对应数量只计算一次),入库表中数量每天是不断添加的
请各位老师,帮用VBA实现,谢谢!

1,数据量多的情况下,再重新统计的时候,是否能只对,未标识 “入“”的进行统计,这样减少统计时间和内存占用较多导致表格卡顿。
2,1个作业指令行数较多时,会分几页出现同一个作业指令这个标题,致使会有商品统计不到,就是说在判断作业指令重复时,不只是对作业指令单号判断,还要对下面的每个序号对应的数据进行判断是否确实重复。
入库数据13-21行和22-30行,这是重复的,统计入库数量时,确实是要删除,后面的36,77,120行的作业指令,是一个指令行数太多,原数据是分几页的,复制过来时会有几个标题和同一个作业指令号码,但是他们下面的序号和数据是没有重复的,所以不能算是重复数据,需要统计。现在就是要判断同一个作业指令如果重复了,如果他们的序号也是重复的,则对应数据不统计,否则要统计

谢谢



订单.png
入库.png

到货统计.rar

38.19 KB, 下载次数: 15

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-17 21:24 | 显示全部楼层
请各位老师有空帮处理下,谢谢

TA的精华主题

TA的得分主题

发表于 2019-4-17 21:30 | 显示全部楼层
表格比较复杂,数据不多  
未经严格测试...
不知道有没有达到楼主要求


到货统计.zip (25.27 KB, 下载次数: 32)

  1. Dim arrrk '入库数据_数组
  2. Sub 到货情况统计()
  3.     Dim d As Object
  4.     Dim arrmx '订单明细数据_数组
  5.     Set d = CreateObject("Scripting.Dictionary")
  6.     With ThisWorkbook.Worksheets("入库")
  7.         arrrk = .Range("A1:I" & .Cells(65536, 2).End(3).Row)
  8.     End With
  9.     Call 删除重复数据   '删除入库数组中重复作业指令对应的数据
  10.     For i = 3 To UBound(arrrk)
  11.         If IsNumeric(arrrk(i, 2)) Then
  12.             d(arrrk(i, 2)) = d(arrrk(i, 2)) + arrrk(i, 6)
  13.         End If
  14.     Next i
  15.     With ThisWorkbook.Worksheets("订单明细")
  16.         arrmx = .Range("A10:P" & .Cells(65536, 1).End(3).Row)
  17.         For i = 1 To UBound(arrmx)
  18.             If arrmx(i, 5) = d(arrmx(i, 2)) Then
  19.                 Cells(i + 9, "P") = "入"
  20.             Else
  21.                 Cells(i + 9, "P") = d(arrmx(i, 2))
  22.             End If
  23.         Next i
  24.     End With
  25. End Sub
  26. Sub 删除重复数据()                   '删除重复作业指令对应的数据
  27.     Dim dz As Object '字典 作业指令
  28.     Set dz = CreateObject("Scripting.Dictionary")
  29.     For i = 3 To UBound(arrrk)
  30.         If InStr(arrrk(i, 1), "作业指令") And (Not dz.exists(arrrk(i, 1))) Then
  31.             dz(arrrk(i, 1)) = 1
  32.         ElseIf InStr(arrrk(i, 1), "作业指令") And dz.exists(arrrk(i, 1)) Then
  33.             Do
  34.                 For j = 1 To UBound(arrrk, 2)
  35.                     arrrk(i, j) = ""
  36.                 Next j
  37.                 i = i + 1
  38.                 If i - 1 = UBound(arrrk) Then Exit Do
  39.             Loop Until InStr(arrrk(i, 1), "作业指令")  'Or i = UBound(arrrk) + 1
  40.         End If
  41.     Next i
  42. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-19 09:46 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 gfdhgw 于 2019-4-19 10:28 编辑
autolzg 发表于 2019-4-17 21:30
表格比较复杂,数据不多  
未经严格测试...
不知道有没有达到楼主要求

感谢帮助,按照原来简单的数据是符合要求的。综合考虑实际情况后。有新的要求,看老师能否有空再帮看一下是否能实现。
订单明细表H列采购对应入库表G列订单号,订单明细表B列商品编码对应入库表B列商品编码,然后对入库表中对应F列入库数量求和,与订单明细E列发货数量对比,相同,在订单明细P表标识 入 ,不相等,列求出实际入库数量,入库表中A列作业指令出现重复,则此作业指令下面的入库数量只计算为一次(13,20行中的作业 指令一样,对应数量只计算一次),入库表中数量每天是不断添加的
请各位老师,帮用VBA实现,谢谢!

1,数据量多的情况下,再重新统计的时候,是否能只对,未标识 “入“”的进行统计,这样减少统计时间和内存占用较多导致表格卡顿。
2,1个作业指令行数较多时,会分几页出现同一个作业指令这个标题,致使会有商品统计不到,就是说在判断作业指令重复时,不只是对作业指令单号判断,还要对下面的每个序号对应的数据进行判断是否确实重复。
谢谢



到货统计.rar

35.06 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2019-4-19 10:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
gfdhgw 发表于 2019-4-19 09:46
感谢帮助,按照原来简单的数据是符合要求的。综合考虑实际情况后。有新的要求,看老师能否有空再帮看一下 ...

根据你后面补充的数据来看,似乎又没有重复数据,也就不用删除重复数据那个sub过程
最开始你那几个重复数据是你“故意添加”的吗?
你还是先整理好你入库表里的原始数据吧

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-19 10:35 | 显示全部楼层
后面上传的表格中,入库数据13-21行和22-30行,这是重复的,统计入库数量时,确实是要删除,后面的36,77,120行的作业指令,是一个指令行数太多,原数据是分几页的,复制过来时会有几个标题和同一个作业指令,但是他们的序号是没有重复的,所以不能算是重复数据,需要统计。现在就是要判断同一个作业指令如果重复了,如果他们的序号也是重复的,则对应数据不统计,否则要统计。
谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-19 10:36 | 显示全部楼层
autolzg 发表于 2019-4-19 10:13
根据你后面补充的数据来看,似乎又没有重复数据,也就不用删除重复数据那个sub过程
最开始你那几个重复 ...

后面上传的表格中,入库数据13-21行和22-30行,这是重复的,统计入库数量时,确实是要删除,后面的36,77,120行的作业指令,是一个指令行数太多,原数据是分几页的,复制过来时会有几个标题和同一个作业指令号码,但是他们下面的序号和数据是没有重复的,所以不能算是重复数据,需要统计。现在就是要判断同一个作业指令如果重复了,如果他们的序号也是重复的,则对应数据不统计,否则要统计。
谢谢

TA的精华主题

TA的得分主题

发表于 2019-4-19 10:43 来自手机 | 显示全部楼层
gfdhgw 发表于 2019-4-19 10:36
后面上传的表格中,入库数据13-21行和22-30行,这是重复的,统计入库数量时,确实是要删除,后面的36,77 ...

从哪复制来的,好多合并单元格。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-4-19 10:53 | 显示全部楼层
zpy2 发表于 2019-4-19 10:43
从哪复制来的,好多合并单元格。。。

是的,公司内部的网页上面的,无法下载,主要问题,是判断重复问题,不然用函数就解决了

TA的精华主题

TA的得分主题

发表于 2019-4-19 10:55 来自手机 | 显示全部楼层
本帖最后由 zpy2 于 2019-4-19 10:57 编辑
gfdhgw 发表于 2019-4-19 10:53
是的,公司内部的网页上面的,无法下载,主要问题,是判断重复问题,不然用函数就解决了


公司内部的网页上面的,
如果量不大,excel可以解决,如果量大恐怕excel这样处理有难度。是不是业务逻辑。。。。
如果是网页的,除了直接复制粘贴到Excel,还可以复制到文本整理好再粘贴可能处理起来要方便一些。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 02:24 , Processed in 0.052100 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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