2017-03-04 4 views
1

Ich habe im Grunde mehrere Variablen, die ich kategorisieren möchte. Ich habe eine Liste, welche Variable in welche Kategorie passt, aber wenn ich 40.000 Einträge manuell durchführe, wäre das zeitgemäß.Select Case in einem Bereich

Grundsätzlich sind meine Daten so, dass a, b, c sind in Gruppe A, d, e, f in Gruppe B und so weiter. Ich habe versucht, den Select Case zu verwenden, aber ich kann nicht herausfinden, wie man es in einem Bereich ausführt; Die Bedeutung, ich habe Variablen in Spalte A. Ich kann es jede Zelle in Spalte A überprüfen wollen und nehmen wir an, wenn sein d dann „Gruppe B“ in Spalte schreiben B. Das alles ist i

Case "a", "b", "c" 
cells(1,2).Value = "Group A" 
Case Else 
cells(1,2).Value = "Not Defined" 
End Select 
End Sub 

Antwort

3
als Anfänger gelänge

Sie benötigen eine Schleife:

Dim r As Long 
    For r = 1 To Cells(Rows.Count, "A").End(xlUp).Row 
     Select Case Cells(r, "A").Value 
      Case "a", "b", "c" 
       Cells(r, 2).Value = "Group A" 
      Case "d", "e", "f" 
       Cells(r, 2).Value = "Group B" 
      Case Else 
       Cells(r, 2).Value = "Not Defined" 
     End Select 
    Next 
End Sub 
+0

Vielen Dank! Das ist mir gerade klar geworden! –

0

Anstatt Zell Schleife durch Zelle können Sie eine schnellere VBA Äquivalent

=IF(OR(A2={"a","b","c"}),"Group A",IF(OR(A2={"d","e","f"}),"Group B","not me"))

Die 0 laufenTeil ist das gleiche wie eine Kopie einfügen einfügen besonderen Wert, d.h. es entfernt die Formeln

Dim rng1 As Range 
With ActiveSheet 
    Set rng1 = .Range(.[a1], .Cells(.Rows.Count, "a").End(xlUp)) 
    rng1.Offset(0, 1).FormulaR1C1 = "=IF(OR(RC[-1]={""a"",""b"",""c""}),""Group A"",IF(OR(RC[-1]={""d"",""e"",""f""}),""Group B"",""not me""))" 
    rng1.Offset(0, 1).Value = rng1.Offset(0, 1).FormulaR1C1 
End With