Excel精英培训网

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

[已解决]复制数据并依次递减的问题

[复制链接]
发表于 2013-11-29 08:47 | 显示全部楼层 |阅读模式
本帖最后由 dfshm 于 2013-11-29 10:12 编辑

附件 复制数据到各表A列并依次递减.rar (6.74 KB, 下载次数: 14)
发表于 2013-11-29 10:05 | 显示全部楼层    本楼为最佳答案   
本帖最后由 redsheep 于 2013-11-29 10:17 编辑

试试这样的代码
  1. Sub test()
  2. On Error Resume Next
  3. Application.ScreenUpdating = False
  4. Set St1 = ThisWorkbook.Sheets.Item(1)
  5. For i = 2 To WorksheetFunction.Min(St1.Cells(1, St1.UsedRange.Column + St1.UsedRange.Columns.Count).End(xlToLeft).Column, ThisWorkbook.Sheets.Count)
  6.     For n = 1 To 12
  7.         St1.Range(St1.Cells(1, i), St1.Cells(St1.Cells(60000, i).End(xlUp).Row - n + 1, i)).Copy
  8.         Set Stn = ThisWorkbook.Sheets.Item(i)
  9.         Stn.Paste Destination:=Stn.Cells(n, n)
  10.     Next
  11. Next
  12. Application.CutCopyMode = False
  13. Application.ScreenUpdating = True
  14. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
dfshm + 1 很给力!

查看全部评分

回复

使用道具 举报

发表于 2013-11-29 10:18 | 显示全部楼层
有了点小修改
运行速度提高了
列数原来限制是100行 现在不限制了
回复

使用道具 举报

发表于 2013-11-29 11:03 | 显示全部楼层
来迟了,请试试。
Sub 复制()
x = WorksheetFunction.Count(Range("B:B"))
y = WorksheetFunction.Count(Range("1:1"))
For m = 2 To y + 1
p = Choose(m - 1, "B", "C", "D", "E")
For n = 1 To 12
q = Choose(n, "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L")
Worksheets("sheet1").Range(p & "1:" & p & x).Copy Sheets("Sheet" & m).Range(q & n)
Sheets("Sheet" & m).Range("A" & (x + 1) & ":L" & (x * 2)).Delete
Next n
Next m
End Sub

评分

参与人数 1 +1 收起 理由
dfshm + 1 赞一个!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-26 00:31 , Processed in 0.137223 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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