选择范围上的Case

时间:2017-03-04 20:22:49

标签: vba excel-vba select-case excel

我基本上有多个要分类的变量。我有一个列表,其中哪个变量进入哪个类别但是给定我有40,000个条目手动执行它是及时的。

基本上我的数据是a,b,c在A组中,d,e,F在B组中,依此类推。 我试图使用Select Case,但我无法弄清楚如何在一个范围内运行它;意思是,我在A列中有变量。我希望它检查A列中的每个单元格,并假设它的d然后写入" B组"在B栏中 这是我作为初学者可以管理的所有内容

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

2 个答案:

答案 0 :(得分:3)

你需要一个循环:

    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

答案 1 :(得分:0)

不是逐个单元循环,而是可以运行更快的VBA等效于

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

Value部分与复制粘贴特殊值相同,即删除公式

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