2017-01-05 10 views
0

Я довольно новичок в этом и выглядел повсюду.Excel VBA, поиск значений в определенных ячейках в именованном диапазоне

У меня есть именованный диапазон «Разрывы» (N14: P60) в листе 7, в котором я хотел бы найти в столбце значения P больше 0 и вставить соответствующие ячейки N: P в лист 9 F: H. Я не могу искать только столбец P.

Это то, что я пытался до сих пор:

Dim cell As Variant 
Dim count As Long 
count = 0 

With Sheet7 

Set Rng = Sheet7.Range("Ruptures") 

For Each cell In Rng 

'But I only want to check cells from the P column (this is where I am stumped) 

If cell.Value > 0 Then 
Range(cell.Offset(0, -2), cell.Offset(0, 0)).Copy 

Sheet9.Activate 
Range("F14", "H14").Offset(count, 0).PasteSpecial (xlPasteValues) 

count = count + 1 

Sheet7.Activate 

Next 

End With 

End If 

End Sub 

Спасибо так много заранее и имеют большой день! :)

Урсула

+1

Это выглядит как ваш 'Конец If' должен быть перед вашим «Следующим», для немедленного взгляда – PartyHatPanda

ответ

0

Это итерацию по всей (мульти-колонки) Диапазон:

Set Rng = Sheet7.Range("Ruptures") 
For Each cell In Rng 

Вы можете ограничить это в третьей колонке с помощью этого:

For Each cell in Rng.Columns(3) 

I также упростит копирование/вставку to avoid unnecessary worksheet Activate и использование прямого назначения Value из одного диапазона в другой (см. here для более подробной информации). И, как было отмечено в комментариях, ваше Next заявление не может быть внутри If блока:

For Each cell in Rng.Columns(3) 

    If cell.Value > 0 Then 
     Sheet9.Range("F14", "H14").Offset(count, 0).Value = Range(cell.Offset(0, -2), cell.Offset(0, 0)).Value 
     count = count + 1 
    End If 

Next 

Это может быть доработан с использованием Resize методов:

For Each cell in Rng.Columns(3) 

    If cell.Value > 0 Then 
     Sheet9.Range("F14").Offset(count).Resize(1,3).Value = cell.Offset(0,-2).Resize(1,3).Value 
     count = count + 1 
    End If 

Next 
+0

Большое спасибо! Это не сработало для меня, вероятно, из-за всего другого задействованного кода. Но, благодаря вашему ответу, я смог по-другому мыслить и смог заставить этот проект работать. Еще раз спасибо! :) – Ursula