Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3401|回复: 4

[已解决]VBA,如何实现隔行复制

[复制链接]
发表于 2017-6-22 16:28 | 显示全部楼层 |阅读模式
本帖最后由 mansiontiger 于 2017-6-22 20:56 编辑

如何利用VBA将(成品编码)与(原料编码)全部自动汇总;成品编码在偶数,原料编码在奇数行

最佳答案
2017-6-23 16:21
  1. Private Sub Worksheet_Activate()
  2.    Call tt
  3. End Sub
  4.    
  5. Sub tt()
  6. Dim arr, brr, crr(), r%, r2%, i%, tr%
  7.     With Sheets("成品编码")
  8.         r = .Range("b65536").End(3).Row
  9.         arr = .Range("a3:e" & r)
  10.     End With
  11.     With Sheets("原料编码")
  12.         r2 = .Range("b65536").End(3).Row
  13.         brr = .Range("a3:e" & r2)
  14.     End With
  15.    
  16.     On Error Resume Next
  17.     ReDim crr(1 To Application.Max(UBound(arr), UBound(brr)) * 2, 1 To 5)
  18.     For i = 1 To UBound(crr) Step 2
  19.         k = (i + 1) / 2
  20.         If k <= UBound(arr) Then
  21.             n = n + 1
  22.             crr(n, 1) = n
  23.             For j = 2 To 5
  24.                 crr(n, j) = arr(k, j)
  25.             Next
  26.         End If
  27.         If k <= UBound(brr) Then
  28.             n = n + 1
  29.             crr(n, 1) = n
  30.             crr(n, 2) = brr(k, 2)
  31.             crr(n, 4) = brr(k, 3)
  32.             crr(n, 5) = brr(k, 4)
  33.         End If
  34.     Next
  35.     [a3:e1000] = ""
  36.     [a3].Resize(UBound(crr), 5) = crr
  37.     [b3].Resize(UBound(crr)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  38. End Sub
复制代码
11.jpg

求助06221.zip

16.95 KB, 下载次数: 3

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-6-22 19:08 | 显示全部楼层
编码汇总表是最终效果吗?为什么成品编码在上,原料编码在下呢?哪有什么奇数行和偶数行???
回复

使用道具 举报

 楼主| 发表于 2017-6-22 20:50 | 显示全部楼层
pengyx 发表于 2017-6-22 19:08
编码汇总表是最终效果吗?为什么成品编码在上,原料编码在下呢?哪有什么奇数行和偶数行???

不是最终效果;公司有套表格,需要在汇总表里做上下两行直观对比,
我的理解是想通过奇偶来实现,弄了几天都没实现了,现在是通过链接来的

求助06221.zip

16.95 KB, 下载次数: 8

回复

使用道具 举报

发表于 2017-6-23 16:21 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub Worksheet_Activate()
  2.    Call tt
  3. End Sub
  4.    
  5. Sub tt()
  6. Dim arr, brr, crr(), r%, r2%, i%, tr%
  7.     With Sheets("成品编码")
  8.         r = .Range("b65536").End(3).Row
  9.         arr = .Range("a3:e" & r)
  10.     End With
  11.     With Sheets("原料编码")
  12.         r2 = .Range("b65536").End(3).Row
  13.         brr = .Range("a3:e" & r2)
  14.     End With
  15.    
  16.     On Error Resume Next
  17.     ReDim crr(1 To Application.Max(UBound(arr), UBound(brr)) * 2, 1 To 5)
  18.     For i = 1 To UBound(crr) Step 2
  19.         k = (i + 1) / 2
  20.         If k <= UBound(arr) Then
  21.             n = n + 1
  22.             crr(n, 1) = n
  23.             For j = 2 To 5
  24.                 crr(n, j) = arr(k, j)
  25.             Next
  26.         End If
  27.         If k <= UBound(brr) Then
  28.             n = n + 1
  29.             crr(n, 1) = n
  30.             crr(n, 2) = brr(k, 2)
  31.             crr(n, 4) = brr(k, 3)
  32.             crr(n, 5) = brr(k, 4)
  33.         End If
  34.     Next
  35.     [a3:e1000] = ""
  36.     [a3].Resize(UBound(crr), 5) = crr
  37.     [b3].Resize(UBound(crr)).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  38. End Sub
复制代码

求助0622.rar

16.96 KB, 下载次数: 19

回复

使用道具 举报

 楼主| 发表于 2017-6-23 16:54 | 显示全部楼层
感谢老师!太完美了。谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 01:06 , Processed in 0.372749 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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