2013-11-20 3 views
0

저는이 초보자입니다. 다음과 같이 시도 : 데이터를 한 행 아래에 쌍으로 짝을지었습니다. 다른 행 옆에 데이터를 짝을지었습니다. (따라서 A2에서 FP2와 A3에서 FP3까지의 범위 대신 A2에서 MF2가되기를 원합니다.). 그래서, 기본적으로, 모든 다른 행을 이전 행에 추가해야합니다.다른 행 값 뒤에 행 값 복사, 이후에 전체 행 복사 다른 시트

나는 그것을 복사하고 그 시트를 다른 시트로 잘라 내기 위해 조건을 동일하게 유지하기 위해 루프를 만들려고 노력했다. (항상 행 2를 옆에 복사한다.) 그러나 나는 만들 수 없다. 그것은 두 번째 시트의 새로운 무료 행에 복사합니다. 디버깅하는 동안 여러 가지 문제가 발생했습니다 (Fors, Ifs, Columns ...)

어쨌든, 현재 코드가 있습니다 만, 어쨌든, 미리 감사드립니다.

Sub pairs() 

Application.CutCopyMode = False 
For Each cell In Sheets("Sve").Range("A2") 
     Sheets("Sve").Select 
     Range("A3:FQ3").Select 
     Selection.Cut 
     Range("FR2").Select 
     ActiveSheet.Paste 
     Rows("3:3").Select 
     Selection.Delete Shift:=xlUp 
     Rows("2:2").Select 
     Selection.Cut 
     Sheets("Gotovo").Select 
     sourceCol = 1 
     rowCount = Cells(Rows.Count, sourceCol).End(x1Up).Row 
     For currentRow = 1 To rowCount 
     currentRowValue = Cells(currentRow, sourceCol).Value 
      If IsEmpty(currentRowValue) Or currentRowValue = "" Then 
       Cells(currentRow, sourceCol).Select 
      End If 
     Next 
     ActiveSheet.Paste 
     Sheets("Sve").Select 
Next 

End Sub 

답변

0

맨 아래부터 시작해서 길을 가면 데이터를 반복하면서 행을 삭제하는 것이 더 쉽다는 것을 발견했습니다.

Dim myRange As Range 
Dim rowCount As Integer 

' Get the range of cells and the count of cells in the A Column 
Set myRange = Range("A1", Range("A1").End(xlDown)) 
rowCount = myRange.Cells.Count 

' Start loop at the last row and decrease by 2 
For i = rowCount To 2 Step -2 

    ' Get the data in the i-th row, inclusive of blank cells between data 
    Set secondrow = Range(myRange.Cells(i, 1), Cells(i, Columns.Count).End(xlToLeft)) 

    ' place i-th row at the end of the (i-1)th row, inclusive of any 
    ' blank cells b/t data 
    secondrow.Copy Cells(i - 1, Columns.Count).End(xlToLeft).Offset(0, 1) 

    ' Delete the second row 
    myRange.Cells(i, 1).EntireRow.Delete 
Next i 

은 이제 행 시트가 원하는 방식으로 포맷 가지고, 당신은 다른 시트를 통해이 모든 데이터를 복사하는 코드를 업데이트 할 수 있습니다. 이 코드는 빈 데이터 행을 촬영하는 방법을 포함

UPDATED

. 데이터 행에 빈 셀 (예 : A B (공백) D)이있을 수 있으므로 Columns.Count을 사용하여 행의 마지막 열을 가져온 다음 .End(XlToLeft) 메서드를 사용하여 행의 마지막 비어 있지 않은 셀을 가져옵니다. 데이터를 붙여 넣을 때 행의 데이터 마지막 ​​셀을 복사하지 않으려면 열 번호를 1 씩 늘려야합니다 (즉, Offset(0,1)).

+0

음, 어쩌면 내가 한 일을 올바르게 이해하지 못했지만 다른 모든 행을 삭제하지 않으려 고합니다. 이전 행의 데이터 뒤에 복사하고 싶습니다. 그리고이 코드를 사용할 때 이해가되지 않습니다. 내가 뭔가 잘못하고있는 경우 ... 죄송합니다 ... – user3013123

+0

샘플 코드는 두 번째 행에 복사 된 후 세 번째 행을 삭제하고 있습니까? – Jaycal

+0

네,하지만 그 시점에서 그 행의 데이터가 복사 되었기 때문에 행이 완전히 비어 있음을 명심하십시오. – user3013123