2016-08-02 4 views
1

Ich bin auf der Suche nach einem Zellenwert gegen 30 möglich If Dann Bedingungen in binäre ausgewertet (wenn x dann y, wenn a dann b ohne doppelte Werte).Schneller Weg zu bewerten 30+ Wenn Dann Ausdrücke in Excel VBA

Wenn die Zelle (a, 35) einem dieser 30 Werte entspricht, muss die Zelle (b, 35) auf einem anderen Blatt mit einem neuen Wert überschrieben werden.

Running 30+ Wenn Dann Paare pro Zeile auf der Tabelle scheint unnötig langsam, aber ich bin nicht vertraut mit einem schnelleren Weg, Datenpaare für diese Zwecke zu verknüpfen. Irgendwelche Vorschläge sind v. Geschätzt!

+4

Würde ein 'Select Case'-Block funktionieren? – Chel

+0

Case Statements ... Es wird fallen, nachdem es den Fall trifft, der eine Übereinstimmung ist. Setzen Sie die wahrscheinlichste (wenn es welche gibt) an die Spitze. – MatthewD

+3

Wenn Sie einige Beispieldaten anzeigen können, könnten Sie stattdessen 'Vlookup' oder' Index/Match' verwenden? – BruceWayne

Antwort

0

Hier ist ein Ansatz, der funktionieren würde, wenn Sie nur einen Vergleich benötigen, um zu sehen, ob jedes Element gleich einer Liste von Werten ist.

Public Sub MultiComparison() 
Dim myCollection As New Collection 
Dim Iterator As Variant 

Set myCollection = CreateCollection() 

For Each Iterator In myCollection ' loop through each item in the collection 
    If Sheets("Sheet1").Cells(1, 1) = Iterator Then ' check each condition 
     Sheets("Sheet2").Cells(2, 1) = Sheets("Sheet1").Cells(1, 1) 
     Exit For 
    End If 
Next 

End Sub 

Public Function CreateCollection() As Collection 
Dim Coll As New Collection 

'Add all your conditions into a collection 
With Coll 
    .Add "Condition1" 
    .Add "Condition2" 
    .Add "Condition3" 
    .Add "Condition4" 
    .Add "Condition5" 
    .Add "Condition6" 
End With 

Set CreateCollection = Coll 
End Function 
+0

Führt das Ergebnis jeder Bedingung nicht zu diesem' Sheets ("Sheet2")) .Cells (2, 1) = Sheets ("Sheet1"). Zellen (1, 1) '? – newguy

+0

Nur wenn es gleich dem Iterator ist –

+0

Aber wie weiß das OP, welcher Iterator es war? – newguy