2017-10-26 1 views
0

特定のデータが含まれている場合、私は、一般的にコーディングに比較的新しいですが、ここに行くの行をコピーします。これは、データが変わるにつれて毎週行われる予定なので、私は少し作業を自動化しようとしています。エクセルVBA:</p> <p>私は整理しようとしていますmembershipdataの膨大なリストを持っている:細胞は

私の問題は、特定のセルに特定のテキストが含まれている場合は、データの行全体をコピーすることです。私はこのコードを使用して、そうすることができました

:しかし

Sub OK() 

Dim c As Range 
Dim j As Integer 
Dim Source As Worksheet 
Dim Target As Worksheet 

Set Source = ActiveWorkbook.Worksheets("Status") 
Set Target = ActiveWorkbook.Worksheets("OK") 

j = 2 
For Each c In Source.Range("F1:F300") 
    If c = "Yes" Then 
     Source.Rows(c.Row).Copy Target.Rows(j) 
     j = j + 1 
    End If 
Next c 
End Sub 

は、私が唯一列EとIの両方はい」が含まれている場合、行をコピーすることにしたい。すなわち、複数の条件を使用したいです"

私の最初の推測はこのだったが、正しいように見えるdoesntの:

For Each c In Source.Range("F1:F300") AND Source.Range("I1:I300") 

私は私のコードに条件を追加するにはどうすればよいですか?私は "と"を使用しようとしましたが、それは正しいようにそれを得ることはできません。

ありがとうございます。

答えて

0

ループに必要な範囲で別の範囲を追加することはできません。その代わりに、最初に入力した1つの範囲をループし、チェックする追加の範囲が行単位で一致しますが、同じ行の列Iの値をテストするために列の使用の点で異なります。以下のように:だから、すべて一緒

If c = "Yes" And c.Offset(0, 3) = "Yes" 

Sub OK() 

Dim c As Range 
Dim j As Integer 
Dim Source As Worksheet 
Dim Target As Worksheet 

Set Source = ActiveWorkbook.Worksheets("Status") 
Set Target = ActiveWorkbook.Worksheets("OK") 

j = 2 
For Each c In Source.Range("F1:F300") 
    If c = "Yes" And c.Offset(0, 3) = "Yes" Then 
     Source.Rows(c.Row).Copy Target.Rows(j) 
     j = j + 1 
    End If 
Next c 
End Sub 
+0

すごいです!完璧に動作します!ありがとうございました:) –

+0

お寄せいただきありがとうございます。完了したら、回答として受け入れてください。 – QHarr

関連する問題