2014-11-13 4 views
0

나는 위의 코드를 잘 작동합니다. 그것은 모든 시트를 분석하고 원하는 A 시트의 행을 찾은 다음 지정된 워크 시트에 붙여 넣습니다. 그러나 지정된 행과 다음 X 행의 행을 복사해야합니다. 누군가 내가이 일을 도울 수 있습니까?행 복사 다음 복사 3

Sub FindValues() 
    Dim ws As Excel.Worksheet 
    Dim LastRow As Long 
    Dim i As Integer 

    For Each ws In Application.ThisWorkbook.Worksheets 
     LastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row 
     i = 1 

     Do While i <= LastRow 
      If ws.Range("A" & i).Value = "OwnershipType Ownership Type" Then 
       ws.Rows(i).Copy Sheets("Summary").Range("A2") 
       i = i - 1 
       LastRow = LastRow - 1 
      End If 
      i = i + 1 
     Loop 
    Next 


End Sub 
+0

'ws.Rows (i) .Copy'로 재생 -'ws.Rows (i & ":"& i + 3) .Copy'를 변경하십시오. BTW :'i = i -1'을 제거하고'lastrow = lastrow - 1'은 2가 의미가 없다. 마지막으로'i = i + 1'을 그대로 두십시오. –

답변

1

당신은 행의 범위를 수정할 수는과 같이이 줄에 복사 : 경기는 1 행에서 발견 된 경우

ws.Rows(i & ":" & i + 3).Copy Sheets("Summary").Range("A2") 

예를 들어, 코드가 ws.Rows(1:4).Copy

+0

완벽한! 나는 그것이 충분히 쉬웠다는 것을 알았지 만 나는 그것을 작동시킬 수 없었다. 나는 범위를 설정하려고 계속 노력했다. 감사! – user3150260

+1

걱정할 필요가 없다면 유용하다고 생각하시면 동의하십시오! – Gareth

0

로 렌더링 것 나는 사소한 수정을했다. (i + 복사 할 행 수)이 추가되었습니다. 아래 코드를 확인하십시오 : 사용 된 정수 copyrw 코드에서이 정수를 설정하여 행 수를 복사 할 수 있습니다.

Sub FindValues() 
    Dim ws As Excel.Worksheet 
    Dim LastRow As Long 
    Dim i As Integer 
    Dim copyrw as Integer 

copyrw = 3 
For Each ws In Application.ThisWorkbook.Worksheets 
    LastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row 
    i = 1 

    Do While i <= LastRow 
     If ws.Range("A" & i).Value = "OwnershipType Ownership Type" Then 
      ws.Rows(i & ":" & i + copyrw).Copy Sheets("Summary").Range("A2") 
      i = i - 1 
      LastRow = LastRow - 1 
     End If 
     i = i + 1 
    Loop 
Next 


End Sub 
+0

'i = i - 1'과'lastRow = lastRow - 1'의 포인트는 무엇이고'i'는'End If'를 지나서 증가합니까? –

+0

흠 ... 그것은 코딩의 이상한 조각입니다. –