2016-11-06 9 views
0

저는 VBA에 매우 익숙하며 0.2 백만 행의 Excel 파일을 통합하려고합니다. 당신은 너무 많은이 데이터를 중복 것을 볼 수 있습니다마지막 행에 열 데이터를 추가하는 VBA 매크로

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를 쓰기 다른 모든 컬럼 데이터를 추가하여 단지 4 열을 갖고 싶어

다음과 같습니다.

누군가 저를 도와 주실 수 있습니까?

참고 : 내 엑셀에는 약 1 백만 행이 있습니다. 그래서 좋은 성능을 가진 솔루션을 찾고 있습니다.

답변

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