VBA如果单元格等于“”名称“则排序

时间:2013-12-06 19:52:05

标签: excel vba excel-vba

我是的新手。我需要有更多经验的人来看这个,用4秒钟来教育我。 :)

我的问题是第一部分是好的(如下所示)。基于单元格D5中的名称(如Don或Keith),我希望进行排序。对于第一部分,它起作用。

此部分有效

Sheets("Input Tab").Select 
Range("D5").Select
If Selection.Value = "Don" Then

Sheets("Cost Center Comparison").Range("$A$5:$P$815").AutoFilter Field:=2, Criteria1:=Array("10" _
    , "11", "12", "13", "14", "15", "20", "21", "30", "51", "52", "54", "55", "57", "58", "60"), Operator:=xlFilterValues

此处ElseIf的问题

然后我想回到同一个单元格(D5)继续评估它。如果名称发生变化,过滤器也会发生变化。

 ElseIf Sheets("Input tab").Range("D5").Selection.Value = "Job/Bob" Then
 Sheets("Cost Center Comparison").Range("$A$5:$P$815").AutoFilter Field:=2, Criteria1:=Array("12"), Operator:=xlFilterValues

ElseIf由于某种原因不起作用,我不太了解语法,无法知道原因。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

这样的事情对你来说可能会更好......

Sub FilterOnName()    
    Dim nm As String, arr As Variant    
    nm = ActiveWorkbook.Sheets("Input Tab").Range("D5").Value

    Select Case nm
        Case "Don": arr = Array("10", "11", "12", "13", "14", "15", _
                                "20", "21", "30", "51", "52", "54", _
                                "55", "57", "58", "60")

        Case "Job/Ron": arr = Array("12")        
        'Case Else: define a default here if no match
    End Select

    If Not IsEmpty(arr) Then        
        ActiveWorkbook.Sheets("Cost Center Comparison").Range("$A$5:$P$815") _
               .AutoFilter Field:=2, Criteria1:=arr, Operator:=xlFilterValues        
    End If        
End Sub