2017-10-26 3 views
0

Ich bin relativ neu im Allgemeinen Codierung, aber hier geht:Excel VBA: Kopieren eine Zeile, wenn Zellen bestimmte Daten enthalten

ich eine riesige Liste von membershipdata, die ich zu organisieren versuchen. Dies wird wöchentlich erfolgen, da die Daten variabel sind. Daher versuche ich, die Arbeit ein wenig zu automatisieren.

Mein Problem ist, ich möchte eine ganze Reihe von Daten kopieren, wenn eine bestimmte Zelle einen bestimmten Text enthält.

konnte ich so mit diesem Code tun:

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 

Ich möchte jedoch mehrere Bedingungen verwenden, dh ich will nur die Zeile kopiert werden, wenn beide Spalte E und I enthält „Ja ".

Meine erste Vermutung war, aber es tut richtig sein:

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

Wie kann ich einen Zustand zu meinem Code hinzufügen? Ich habe versucht, "und" zu verwenden, aber kann es nicht richtig machen, scheint es.

Vielen Dank im Voraus.

Antwort

0

Sie können keinen weiteren Bereich auf die Art hinzufügen, wie Sie eine Schleife haben. Schleifen Sie stattdessen den einen Bereich, wie Sie ihn ursprünglich festgelegt haben, und den zusätzlichen Bereich, in dem Sie Übereinstimmungen zeilenweise überprüfen möchten, unterscheidet sich jedoch in der Spaltenverwendung OFFSET, um den Wert von Spalte I in derselben Zeile zu testen. Wie weiter unten:

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

Also alles zusammen:

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

Awesome! Funktioniert perfekt! Danke :) –

+0

Gerne helfen. Bitte akzeptieren als Antwort, wenn Sie zum Schließen klicken. – QHarr

Verwandte Themen