2017-01-05 13 views
0

私はむしろこれのすべてを新しくしており、どこでも見てきました。Excel VBA、名前付き範囲内の特定のセルの値を検索

私はシート7に名前がつけられた範囲 "Ruptures"(N14:P60)を持っています。これは、0より大きい列Pの値を見つけてシート9F:Hに対応するセルN: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 

感謝をし、素晴らしい一日持っている:私はこれは私がこれまで試したものですのみの列P.

を検索するように見えることはできません! :)

ウルスラ

+1

それがどのように見えるが、あなたの 'If'を終了する必要がありますあなたの 'Next'の前にいて、すぐに一見すると – PartyHatPanda

答えて

0

この範囲全体(複数列)にわたって反復される:

For Each cell in Rng.Columns(3) 

I:

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

あなたはこれを使用して、3列目にこれを制限することができコピー/ペースト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

関連する問題