以下是引用山菊花在2006-12-7 11:37:00的发言:直接单元格复制: Private Sub CommandButton2_Click() Dim nRow As Long, nRow2 nRow = Range("a65536").End(xlUp).Row nRow2 = nRow For i = nRow To 1 Step -2 Range("i" & nRow2).Resize(1, 8) = Range("a" & i).Resize(1, 8).Value nRow2 = nRow2 - 1 Next End Sub
山菊花老师!谢谢!!今天让我第一次看到了resize这个方法呵呵,我查了帮助,又学了新知识。我的难题在于:先读取range(cells(1,1),cells(range("A65536").end(xlup).row,8))的数据,然后在后面分别以隔一行,隔两行,隔三行……到隔20行排列。我用的和你的方法差不多,只是因为隔的太多,我又只会用循环呵呵,其他语句和方法我不会。我从2004年2月19日注册,刚开始就学的是FOR NEXT语句哈哈,所以也最喜欢用它。我把我的代码给老师看看,有没有更好的解决办法,让速度彻底上去,我这样的方法是很慢的呵呵。因为不是一张表这样排,而是5张表呵呵,所以就慢了。我其中的代码如下: Sub YiZhiWuGeQi() '1-5表隔期排列 Dim Endrow,sheetnum,m,n,i as Integer Application.ScreenUpdating = False '关闭屏幕刷新 Endrow = Sheet1.Range("A65536").End(xlUp).Row '确定原始数据最后一行 For sheetnum = 1 To 5 '分别填充1-5表 Sheets(sheetnum).Select With Sheets(sheetnum) m = 9 For n = -2 To -32 Step -1 '确定所隔的最大行数 For i = Endrow To 6 Step n '确定每次所隔的行数 Range(Cells(Endrow, m), Cells(Endrow, m + 7)).Value = Range(Cells(i, 1), Cells(i, 8)).Value Endrow = Endrow - 1 '逐行填充,由下往上 Next i Endrow = Sheet1.Range("A65536").End(xlUp).Row '重新确定最后一行,然后由上往上填充 m = m + 8 Next n Next sheetnum Application.ScreenUpdating = True '屏幕刷新 Sheet1.Range("I6").Select End Sub
不求老师全部写出代码呵呵,只是想吸取老师的思路,对我来说只能做到这样了呵呵.希望老师在百忙之中不吝赐教才好!不胜感激!! |