2016-11-06 271 views
0

我對VBA很陌生,試圖整合一個有20萬行的excel文件。VBA宏將列數據添加到最後一行

我的Excel格式是

enter image description here

你可以看到這麼多的重複數據存在。由於標題相同,我希望通過附加其他列數據來使整個工作表只有4列。

例如:

Data in the columns F2-I2 will go to A4 - D4 

        F3 - I3 will go to A5 - D5 

similarly 

        K2 - N2 will go to A6 - D6 

        K3 - N3 will go to A7 - D7 

,並遵循

我想寫一個VBA宏,並運行它應該使Excel的宏通過附加其他所有列的數據只有4列。

有人可以幫助我實現這一目標。

注意:這樣做後,我的Excel將有大約100萬行。所以我正在尋找一個性能良好的解決方案。

回答

0

我認爲這隻能通過遍歷塊,列和行來解決,如果你有一百萬個值,可能需要一些時間。

要提高性能禁用screenUpdating並確保宏不會崩潰包括循環中的DoEvents()。

請注意,在Excel中的最大行數是1'048'576

Sub moveValues() 

Application.ScreenUpdating = False 
Dim i As Integer 
Dim j As Integer 
Dim k As Long 
Dim row As Long 
Dim col As Integer 
Dim lastRowTarget As Long 
Dim lastRowSource As Long 

Dim wks As Worksheet 

Set wks = Sheets("Sheet1") 

For i = 6 To 16 Step 5 
    lastRowSource = wks.Cells(Rows.Count, Chr(64 + i)).End(xlUp).row 
    lastRowTarget = wks.Cells(Rows.Count, "A").End(xlUp).row 
    col = 1 
    For j = i To i + 3 
     For k = 2 To lastRowSource 
      wks.Cells(lastRowTarget + k - 1, col) = wks.Cells(k, j) 
      DoEvents 
     Next k 
     col = col + 1 
    Next j 
Next i 
Application.ScreenUpdating = True 
End Sub