2016-04-05 4 views
0

Я пытаюсь найти текст на листе в столбце c, а затем, если найденный в той же строке, выберите столбец a и скопируйте и вставьте в лист два. Я начал с этим кодомВыбор некоторых столбцов в VBA после поиска

Sub Test() 
For Each Cell In Sheets("Asset Capture").Range("C35:C3000") 
If Cell.Value = "MONITOR" Then 
matchRow = Cell.Row 
Rows.Range(matchRow & ":" & matchRow).Select 
Selection.Copy 
Sheets("GRN Status Report").Select 
lastRow = ActiveSheet.UsedRange.Rows.Count 
If lastRow > 1 Then lastRow = lastRow + 1 
ActiveSheet.Range("A" & lastRow).Select 
ActiveSheet.Paste 
Sheets("Asset Capture").Select 
End If 
Next 
End Sub 

но выбирает всю строку и я не могу понять, как изменить код, чтобы выбрать данные только в столбце A?

+0

Спасибо все получило его отсортирован !!! – jest3r

ответ

0

Попробуйте это:

Sub Test() 
    Dim Cell As Range, rngDest As Range 

    Set rngDest = Sheets("Grn Status Report").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 
    For Each Cell In Sheets("Asset Capture").Range("C35:C3000") 
     If Cell.Value = "MONITOR" Then 
      Cell.EntireRow.Cells(1).Copy rngDest 
      Set rngDest = rngDest.Offset(1, 0) 
     End If 
    Next 

End Sub 

Примечание Вы не должны использовать Select/Активировать, и ваш код будет более надежной, если избежать этого как можно больше.

См: How to avoid using Select in Excel VBA macros

0

Надеется, что вы ищете для этого

Sub Test() 
increment = Worksheets("GRN Status Report").Range("A" & Rows.Count).End(xlUp).Row 
For Each cell In Sheets("Asset Capture").Range("C5:C3000") 
    If cell.Value = "MONITOR" Then 
     matchrow = cell.Row 
     matchcontent = Range("A" & matchrow).Value 
     Worksheets("GRN Status Report").Cells(increment, 1) = matchcontent 
     increment = increment + 1 
    End If 
Next 
End Sub 
Смежные вопросы