2015-03-30 34 views
0

嗨我想複製工作表中的所有列到另一個下面的另一個工作表。使用循環複製一系列的列

        Sheet A 

Column   A   B    C ....................BL 

      ValueA  ValueB  ValueC..................ValueBL 
      ValueA2  ValueB2  ValueC2.................ValueBL2 
       .    .   .      . 
       .    .   .      . 
      ValueA10  ValueB10  ValueC10...............ValueBL10 

           Target Sheet 

      Value A 
       . 
       . 
      Value A10 
      Value B 
       . 
       . 
      Value B10 
      Value C 
       . 
       . 
      Value C10 

等等。基本上每個列都有多個值(行),並有數百個列。我想將所有列都複製到另一個下面。這將需要一個循環,但我不明白如何使用它。因爲

set ws1 As SheetA 
set ws2 As Target 
With ws1 
LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column 
End With 
Lastrow = period.Range("B" & Rows.Count).End(xlUp).Row 

For i=1 to Lastcol 
    ws1.Range("?" & lastrow).copy ws2.Range("a65536").End(xlUP).Offset(1,0) 
Next i 

我沒有越來越多,而不是「?」。感謝任何幫助。謝謝。

編輯:

set ws1 As SheetA 
set ws2 As Target 
With ws1 
LastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column 
End With 
Lastrow = ws1.Range("B" & Rows.Count).End(xlUp).Row 
For i = 1 To Lastcol 
    For l = 4 To lastrow 
     ws1.Cells(l, i).Copy ws2.Range("a65536").End(xlUp).Offset(1, 0) 
    Next l 
Next i 

我的數據,從第4行開始,這就是從4

回答

0

我開始L的原因在我看來像你需要兩個for循環......一個遍歷列然後行。另外,在這種情況下,我會使用「單元格」與「範圍」,並使用循環中的列號。也有方法來查找第一行和最後一行和列,但你沒有問這個...

Sub test() 
Set ws1 = Sheets(1) 
Set ws2 = Sheets(2) 
Lastcol = 5 
lastrow = 10 

For i = 1 To Lastcol 
    For l = 1 To lastrow 
     ws1.Cells(l, i).Copy ws2.Range("a65536").End(xlUp).Offset(1, 0) 
    Next l 
Next i 

End Sub 
+0

謝謝,但我陷入了一個無限循環。我添加了我的lastrow和列定義。你能請指教嗎? – Meesha 2015-03-31 01:44:15

+0

回顧一下你的例子,你應該陷入無限循環的唯一原因是行和列的定義不正確。你是否在代碼中設置了一個停止位,或者通過它來確保正確的列和行數是正確的? – 2015-04-02 14:06:24

+0

這對我有用。謝謝。 80k行需要2小時,但效果很好 – Meesha 2015-04-02 14:26:36