2013-09-05 192 views
0

我記錄了一個宏以引用Sheet1上的數據並將其拖到Sheet2上。創建一個循環

我需要繼續操作,直到Sheet1(或行209)上沒有更多數據出現。

Sub Macro1() 
    Range("A1").Select 
    ActiveCell.FormulaR1C1 = "=Sheet1!RC" 
    Range("A2").Select 
    ActiveCell.FormulaR1C1 = "=Sheet1!R[-1]C" 
    Range("A3").Select 
    ActiveCell.FormulaR1C1 = "=Sheet1!R[-2]C" 
    Range("A4").Select 
    ActiveCell.FormulaR1C1 = "=Sheet1!R[-2]C" 
    Range("A5").Select 
    ActiveCell.FormulaR1C1 = "=Sheet1!R[-3]C" 
    Range("A6").Select 
    ActiveCell.FormulaR1C1 = "=Sheet1!R[-4]C" 
    Range("A7").Select 
End Sub 
+0

每6個細胞的模式總是相同嗎?在你的例子中,單元格A1到A3總是相同的(即Sheet1上的單元格A1)並且A4到A6是相同的(即Sheet1上的單元格A2)。顯示數據的快照可能對此有所幫助... –

回答

0

它看起來像從你的代碼,你只是複製和粘貼工作表Sheet1從到Sheet2,但對於每一行你走在Sheet2中,你去了一個排在Sheet1。換句話說,"=Sheet1!R[-x]C"使它看起來像你正在通過x上行。

您的代碼顯示的是逐步選擇每個單元格然後進行更改的過程。爲什麼不一次這樣做without the .Select statments

例如,For...Next環可以這樣做:

For i = 1 To 209 
    Worksheets("Sheet2").Cells(210 - i, 1).Value = _ 
    Worksheets("Sheet1").Cells(i, 1).Value 
Next 

這將複製單元的內容(在.Value屬性)直接。