2017-03-24 2 views
0

다음 코드는 첫 번째 "적중"을 건너 뜁니다. '메모'에서 G 열에 'x'가있는 셀이 새 시트에 붙여 넣어집니다. 그러나 "x"가있는 첫 번째 행은 매번 제외됩니다.VBA 첫 번째 일치하는 셀 건너 뛰기

Sub Test() 
For Each Cell In Sheets("Notes").Range("G:G") 
If Cell.Value = "x" Then 
    matchRow = Cell.Row 
    Rows(matchRow & ":" & matchRow).Copy 

    Sheets("Completed Conversions").Select 
    Range("A" & Rows.Count).End(xlUp).Offset(1).Select 
    ActiveSheet.Paste 
    Sheets("Notes").Select 
End If 
Next 
Sheets("Completed Conversions").Select 
End Sub 

고맙습니다!

+4

워크 시트의 첫 번째 x 인스턴스에 공백이없는 것을 확신하십니까? 그것을 설명하기 위해'Trim (Cell.Value) = "x"'를 사용할 수 있으며 이는 선행 또는 후행 공백을 처리합니다. – Dave

+1

당신은 물어 보지 않았지만'Rows (matchRow & ":"& matchRow) .Copy Sheets ("Completed Conversions") 한 줄에 과거 복사본을 만들 수 있습니다. 범위 ("A"& Rows.Count) .End (xlUp) .Offset (1)'. 선택을 사용하는 것보다 훨씬 좋은 접근법입니다. 여전히 정규화되지 않은'Rows.Count'가 있습니다. – Kyle

답변

2

Select을 다른 용지로 복사하려면 용지 사이를 전환해야합니다.

둘째, 대신, 전체 행을 복사하는 경우 :

matchRow = Cell.Row 
Rows(matchRow & ":" & matchRow).Copy 

사용 :

Cell.EntireRow.Copy 

마지막 한가지 : 대신 전체 열 G 통해 단지 루프를 통해 반복의 값이있는 모든 셀 :

For Each Cell In Sheets("Notes").Range("G1:G" & Sheets("Notes").Cells(Sheets("Notes").Rows.Count, "G").End(xlUp).Row) 

전체 코드는 아래 코드로 바꿀 수 있습니다.

+0

감사합니다! 완벽하게 일했습니다. –

관련 문제