Excel精英培训网

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

[已解决]简化代码用变量自动化

[复制链接]
发表于 2016-5-28 16:36 | 显示全部楼层 |阅读模式
本帖最后由 乐乐2006201506 于 2016-5-28 21:26 编辑

Sub 宏1()
    Range("D3:F65").Cut
    Range("A66").Select
    ActiveSheet.Paste
    Range("G3:I65").Cut
    Range("A129").Select
    ActiveSheet.Paste
    Range("J3:L65").Cut
    Range("A192").Select
    ActiveSheet.Paste
    Range("B3").Select
End Sub
Sub 宏2()
    Range("A66:C254").Cut
    Range("D3").Select
    ActiveSheet.Paste
    Range("D66:F191").Cut
    Range("G3").Select
    ActiveSheet.Paste
    Range("G66:I128").Cut
    Range("J3").Select
    ActiveSheet.Paste
    Range("B3").Select
End Sub

最佳答案
2016-5-28 20:26
本帖最后由 老司机带带我 于 2016-5-28 21:43 编辑

纯修改代码,没有考虑其他:
  1. Sub 宏1修改()
  2.     Dim i%, j%
  3.     For i = 4 To 6  '从第4列开始,循环三次剪辑,可设置循环次数
  4.         j = (i - 4) * 2  'i的值为4,5,6,但实际的列为4,7,10,即i的基础上加0,2,4,即j的值
  5.         Range(Cells(3, i + j), Cells(65, i + j + 2)).Cut
  6.         Cells(3 + (i - 3) * 63, 1).Select  '63即为实际剪切的行数
  7.         ActiveSheet.Paste
  8.     Next
  9. End Sub
  10. Sub 宏2修改()
  11.     Dim i%, j%
  12.     For i = 1 To 3   '同样为循环三次,但这个值需要实际按行数进行计算,本例只是简化代码,所以没考虑自动计算,即总行数-2除以63,这些都是需要自己设置的
  13.         Range(Cells(i * 63 + 3, 1), Cells((i + 1) * 63 + 2, 3)).Cut
  14.         Cells(3, i * 3 + 1).Select
  15.         ActiveSheet.Paste
  16.     Next
  17. End Sub
复制代码
发表于 2016-5-28 20:26 | 显示全部楼层    本楼为最佳答案   
本帖最后由 老司机带带我 于 2016-5-28 21:43 编辑

纯修改代码,没有考虑其他:
  1. Sub 宏1修改()
  2.     Dim i%, j%
  3.     For i = 4 To 6  '从第4列开始,循环三次剪辑,可设置循环次数
  4.         j = (i - 4) * 2  'i的值为4,5,6,但实际的列为4,7,10,即i的基础上加0,2,4,即j的值
  5.         Range(Cells(3, i + j), Cells(65, i + j + 2)).Cut
  6.         Cells(3 + (i - 3) * 63, 1).Select  '63即为实际剪切的行数
  7.         ActiveSheet.Paste
  8.     Next
  9. End Sub
  10. Sub 宏2修改()
  11.     Dim i%, j%
  12.     For i = 1 To 3   '同样为循环三次,但这个值需要实际按行数进行计算,本例只是简化代码,所以没考虑自动计算,即总行数-2除以63,这些都是需要自己设置的
  13.         Range(Cells(i * 63 + 3, 1), Cells((i + 1) * 63 + 2, 3)).Cut
  14.         Cells(3, i * 3 + 1).Select
  15.         ActiveSheet.Paste
  16.     Next
  17. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2016-5-28 21:28 | 显示全部楼层
老司机带带我 发表于 2016-5-28 20:26
纯修改代码,没有考虑其他:

麻烦您能详细注释一下吗?谢谢!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-23 18:11 , Processed in 0.122822 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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