【问题标题】:Select Case on a range在一个范围内选择大小写
【发布时间】:2017-07-24 20:49:20
【问题描述】:

我基本上有多个要分类的变量。我有一个列表,其中列出了哪个变量属于哪个类别,但是鉴于我有 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

【问题讨论】:

    标签: vba excel select-case


    【解决方案1】:

    你需要一个循环:

        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
    

    【讨论】:

    • 谢谢!刚刚意识到这一点!
    【解决方案2】:

    您可以运行更快的 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      相关资源
      最近更新 更多