ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 用VBA分类,并复制粘贴到另一个表中

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-1-18 01:23 | 显示全部楼层 |阅读模式
求助使用VBA将《装车表》中的数据按条件,自动复制并粘贴到《发货单》中,因数太多每次都要复制再粘贴,太浪费时间了。垦求老师帮助,指点指点,谢谢!

172634hz5cxap99x5xuaus.png

求助VBA.zip

611.14 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2018-1-18 11:24 | 显示全部楼层
可以实现   但工程也不小

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-1-18 13:04 | 显示全部楼层
@abc123281  看到你回答我真的很开心,谢谢!
可以抽空帮我写一下代码吗,在此先谢过了,改天我请你吃饭哈。

TA的精华主题

TA的得分主题

发表于 2018-1-18 14:05 | 显示全部楼层
好啊  等待      会有结果的  

TA的精华主题

TA的得分主题

发表于 2018-1-18 19:27 | 显示全部楼层
  1. Sub test()
  2.   Dim r%, i%
  3.   Dim arr, brr
  4.   Dim d As Object
  5.   Set d = CreateObject("scripting.dictionary")
  6.   Application.ScreenUpdating = False
  7.   Application.DisplayAlerts = False
  8.   With Worksheets("装车表")
  9.     bt = .Range("a3:r4")
  10.     r = .Cells(.Rows.Count, 1).End(xlUp).Row
  11.     arr = .Range("a6:t" & r)
  12.     For i = 1 To UBound(arr)
  13.       arr(i, 20) = "是"
  14.     Next
  15.     .Range("a6:t" & r) = arr
  16.     For i = 1 To UBound(arr)
  17.       If Not d.exists(arr(i, 17)) Then
  18.         m = 1
  19.         ReDim brr(1 To m)
  20.       Else
  21.         brr = d(arr(i, 17))
  22.         m = UBound(brr) + 1
  23.         ReDim Preserve brr(1 To m)
  24.       End If
  25.       brr(m) = i
  26.       d(arr(i, 17)) = brr
  27.     Next
  28.   End With
  29.   With Worksheets("发货单")
  30.     .Range("b3") = bt(1, 5)
  31.     .Range("b4") = bt(1, 15)
  32.     .Range("e4") = bt(1, 18)
  33.     .Range("l4") = bt(2, 5)
  34.     .Range("a23:o" & .Rows.Count).Delete shift:=xlUp
  35.     k = 1
  36.     For Each aa In d.keys
  37.       brr = d(aa)
  38.       m = 6
  39.       .Range("e3,l3,b6:n17") = ""
  40.       .Range("e3") = aa
  41.       .Range("l3") = arr(brr(1), 18)
  42.       For i = 1 To UBound(brr)
  43.         For j = 2 To 13
  44.           .Cells(m, j) = arr(brr(i), j)
  45.         Next
  46.         m = m + 1
  47.         If m > 17 Or i = UBound(brr) Then
  48.           k = k + 23
  49.           .Range("a1:o22").Copy .Cells(k, 1)
  50.           m = 6
  51.           .Range("b6:n17") = ""
  52.         End If
  53.       Next
  54.     Next
  55.     .Range("a1:o23").Delete shift:=xlUp
  56.   End With
  57.   Application.ScreenUpdating = True
  58.   MsgBox "发货单生成完毕!"
  59. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-1-18 19:28 | 显示全部楼层
请abc123281坛友斧正。

求助VBA.rar

556.29 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2018-1-18 19:30 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-1-18 19:48 | 显示全部楼层
纠正了其中存在的问题。

求助VBA.rar

554.87 KB, 下载次数: 18

TA的精华主题

TA的得分主题

发表于 2018-1-18 19:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
非常完美   没问题了

TA的精华主题

TA的得分主题

发表于 2018-1-18 19:53 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-11 11:00 , Processed in 0.050158 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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