ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 同一产品多批次生产日期及对应箱数横向排列

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-7-5 21:09 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
各位老师,大致需求如下:

①“匹配”这页是源数据,同一个商品会有多个生产日期的情况,如红框(2个产生日期)和蓝框(3个生产日期)所示
②“电子送货单”这页,需要将同一商品号对应的不同的生产日期及其对应的箱数进行横向排列,如红框和蓝框所示
③“匹配”这页源数据行数较多,一般有100多行,可能会有同一商品不同生产日期不连续排列,隔了几行的情况

“电子送货单”这页的E-J列是我手工做的最终效果,供老师们参考


同一产品多批次生产日期横向排列.rar

35.38 KB, 下载次数: 19

横向排列

TA的精华主题

TA的得分主题

发表于 2025-7-6 07:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2025-7-6 07:26 | 显示全部楼层
如果有相同日期或者超出3个日期,写法要不同

同一产品多批次生产日期横向排列.rar

35.75 KB, 下载次数: 4

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2025-7-6 07:41 | 显示全部楼层
超出3个将出错(后面被覆盖)

同一产品多批次生产日期横向排列.rar

44.2 KB, 下载次数: 3

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-7-6 11:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
shiruiqiang 发表于 2025-7-6 07:26
如果有相同日期或者超出3个日期,写法要不同

老师您好,您写的完全和需求的一样,感谢您的指导。
我测试了下源数据超过60行时会报错“下标越界”,没有相同日期也不超出3个日期,无论填什么都会报错
不好意思老师我是小白,研究了半天实在不知道该如何修改,您能否再帮忙指导下,再次感谢
源数据超60行报错.png
下标越界.png
调试.png

TA的精华主题

TA的得分主题

发表于 2025-7-6 11:43 | 显示全部楼层
aquariusxiao 发表于 2025-7-6 11:28
老师您好,您写的完全和需求的一样,感谢您的指导。
我测试了下源数据超过60行时会报错“下标越界”,没 ...

我模拟到70多行都没问题,要不发附件
image.jpg
image.jpg

TA的精华主题

TA的得分主题

发表于 2025-7-6 13:45 | 显示全部楼层
  1. Sub Test()
  2. Dim Dic As Object, Lj, LastR&, i&, j&, k&, St$, Br, FirstR&
  3. FirstR = 11
  4. Br = Array(, "w", "c", "d", "aa")

  5. Application.Intersect(Columns("A:Q"), ActiveSheet.UsedRange).Offset(FirstR - 1).ClearContents
  6. Set Dic = CreateObject("Scripting.Dictionary")
  7. With Worksheets("匹配")
  8. LastR = .Cells(Rows.Count, "P").End(xlUp).Row
  9. ReDim Lj(FirstR To LastR + FirstR) 'FO的列号
  10. For i = 2 To LastR
  11.   St = .Cells(i, "P")
  12.   If Not Dic.Exists(St) Then
  13.    j = Dic.Count + FirstR: Dic(St) = j: Lj(j) = 5
  14.    For k = 1 To UBound(Br)
  15.     Cells(j, k) = .Cells(i, Br(k))
  16.    Next
  17.    For k = 11 To 16: Cells(j, k) = .Cells(i, k + 5): Next
  18.    Cells(j, 17) = .Cells(i, "V") & .Cells(i, "Y") & .Cells(i, "X")
  19.   Else
  20.    j = Dic(St): Lj(j) = Lj(j) + 2
  21.   End If
  22.   Cells(j, Lj(j)) = .Cells(i, "F")
  23.   Cells(j, Lj(j) + 1) = .Cells(i, "O")
  24. Next
  25. End With
  26. Set Dic = Nothing
  27. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2025-7-6 15:13 | 显示全部楼层
  1. Sub Test()
  2. Dim Dic As Object, Lj, LastR&, i&, j&, k&, St$, Br, FirstR&
  3. FirstR = 11
  4. Br = Array(, "w", "c", "d", "aa")

  5. Application.Intersect(Columns("A:Q"), ActiveSheet.UsedRange).Offset(FirstR - 1).ClearContents
  6. Set Dic = CreateObject("Scripting.Dictionary")
  7. With Worksheets("匹配")
  8. LastR = .Cells(Rows.Count, "P").End(xlUp).Row
  9. ReDim Lj(FirstR To LastR + FirstR) 'FO的列号
  10. For i = 2 To LastR
  11.   St = .Cells(i, "P")
  12.   If Not Dic.Exists(St) Then
  13.    j = Dic.Count + FirstR: Dic(St) = j: Lj(j) = 5
  14.    For k = 1 To UBound(Br)
  15.     Cells(j, k) = .Cells(i, Br(k))
  16.    Next
  17.    For k = 11 To 16: Cells(j, k) = .Cells(i, k + 5): Next
  18.    Cells(j, 17) = .Cells(i, "V") & .Cells(i, "Y") & .Cells(i, "X")
  19.   Else
  20.    j = Dic(St): Lj(j) = Lj(j) + 2
  21.   End If
  22.   Cells(j, Lj(j)) = .Cells(i, "F")
  23.   Cells(j, Lj(j) + 1) = .Cells(i, "O")
  24. Next
  25. End With
  26. Set Dic = Nothing
  27. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2025-7-6 17:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
参与一下。。。。

同一产品多批次生产日期横向排列.zip

48.77 KB, 下载次数: 2

TA的精华主题

TA的得分主题

发表于 2025-7-6 17:44 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-7-20 07:52 , Processed in 0.027038 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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