2014-11-13 7 views
0

Я разрабатываю макрос, где, когда он выполняется, он ищет значение «2» в столбце C и копирует эту строку только из ячейки A-C, в sheet2. Код, который я работаю, не работает. Пожалуйста, не могли бы вы мне помочь.Специфичный диапазон диапазона диапазона Vba

Sub LoopRange() 

    Dim rCell As Range 
    Dim rRng As Range 

    Set rRng = Sheet1.Range("C1:C20") 

    For Each rCell In rRng.Cells 

    If rCell.Value = "2" Then 
    Range(Cells(1, 1), Cells(3, 3)).Copy Sheets("Sheet2").Cells(1, 1) 
    End If 

    Next rCell 

End Sub 
+1

"Код я работаю не работает", что не так и где? – pnuts

+0

Когда он работает, он ничего не выбирает и не зацикливается. Но испытал это с листами («Лист1») .Range (.Cells (1, 1), .Cells (3, 3)). Копии листов («Sheet2»). Ячейки (1, 1) Конец С " копирование с листа 1 и склеивание на лист 2. Но когда я пытаюсь сделать это через лист, я не получаю результата – kay

+0

. Вы копируете тот же самый диапазон в то же самое место. Я предполагаю, что это то, что вы хотите в своем if: «Диапазон (ячейки (rCell.Row, 1), ячейки (rCell.Row, 3)). Копии листов (« Sheet2 »). Ячейки (rCell.Row, 1)' –

ответ

1

Ваш текущий код копирует одни и те же ячейки в одно и то же место каждый раз. Попробуйте вместо этого:

Sub test() 
    Dim rCell As Range 
    Dim rRng As Range 
    Dim cnt As Long 
    cnt = 1 

    Set rRng = Sheet1.Range("C1:C20") 

    For Each rCell In rRng.Cells 
    If rCell.Value = "2" Then 
     Range(Cells(rCell.Row, 1), Cells(rCell.Row, 3)).Copy Sheets("Sheet2").Cells(cnt, 1) 
     cnt = cnt + 1 
    End If 
    Next rCell 
End Sub 

Лист 1 тестовых данных:

enter image description here

Лист 2 Результаты:

enter image description here

+0

Спасибо Очень ценим, отличное сообщество людей ... – kay