2016-12-14 109 views
1

下面的代碼是我的全部Sub的一個片段,只是因爲它會更容易在這裏閱讀。我需要爲一些案例添加更多標準,而且我不知道如何實施。Excel - 選擇多個條件的案例

總結這是幹什麼的,如果K列有一個以B,M或D開頭的單詞,它就運行一組案例。如果K列有一個以A開頭的單詞,它會運行一組不同的案例。再次,這是工作。但在某些情況下,我需要它有更多的標準,而不是隻看O列。

例如,在第一種情況下,它需要檢查「伊利諾伊大學」和「UofI」,但是還需要檢查P列的「Urbana」和「Chicago」的值。我怎樣才能做到這一點?

Sub Test4() 
    Dim LastRow As Long 
    Dim i As Long 
    LastRow = Range("O" & Rows.Count).End(xlUp).Row 
    For i = 84 To LastRow 
     If Range("K" & i) Like "B*" Or Range("K" & i) Like "M*" Or Range("K" & i) Like "D*" Then 
      Select Case Range("O" & i) 
       Case "University of Illinois", "UofI" 
        Range("N" & i) = "1234" 
      End Select 
     End If 
     If Range("K" & i) Like "A*" Then 
      Select Case Range("O" & i) 
       Case "New York University", "NYU" 
        Range("N" & i) = "5075" 
      End Select 
     End If 
    Next i 
End Sub 
+0

也許你可以把你的選擇case語句四捨五入到'選擇Case True「,然後你的第一個案例可能是'Range(」O「&i)=」University of Illinois「和Range(」P「&i)=」Urbana「'(然後可以說你可以使用If ')。 – SJR

+0

如果各種情況下的條件涉及基於多個值的多個標準,爲什麼不僅僅使用「If - Then - ElseIf ...'級聯而不是Select Case」?這允許您在條件中使用布爾運算符。 –

+0

@Robby在下面我的解答答案中嘗試一下代碼,有一種方法可以「欺騙」「選擇案例」以使用「Like」運算符 –

回答

2
Select Case Range("O" & i) 
    Case "University of Illinois", "UofI" 
     Select Case Range("P" & i") 
      Case "Urbana", "Chicago" 
       Range("N" & i) = "1234" 
     End Select 
End Select 

這是否足夠?沒有測試過,所以請反饋,以便我們可以幫您找到解決方案

+0

這很接近。 「厄巴納」和「芝加哥」需要不同的情況。這點讓我指出了正確的方向。如果我將它們分爲不同的情況,它就會起作用。謝謝。 – Robby

2

在正常情況下,Select Case聲明不適用於Like運算符。但是,有一個解決方法。我們將添加一個True表達式。

代碼

Sub Test4() 

    Dim LastRow As Long 
    Dim i As Long 

    LastRow = Range("O" & Rows.Count).End(xlUp).Row 
    For i = 84 To LastRow 

     Dim wordStr 
     wordStr = Range("K" & i) 

     ' adding True to enter the below Case with Like 
     Select Case True 
      Case wordStr Like "B*", wordStr Like "M*", wordStr Like "D*" 
       Select Case Range("O" & i) 
        Case "University of Illinois", "UofI" 
         Range("N" & i) = "1234" 

       End Select 

      Case wordStr Like "A*" 
       Select Case Range("O" & i) 
        Case "New York University", "NYU" 
         Range("N" & i) = "5075" 

       End Select 

     End Select 
    Next i 

End Sub 
+0

這是一個巧妙的技巧,儘管我在可讀性方面感到矛盾。 –

0

,因爲你需要捕捉「詞開頭爲」你可以去這樣

Sub Test4() 
    Dim LastRow As Long, i As Long 

    LastRow = Range("O" & Rows.count).End(xlUp).row 
    For i = 84 To LastRow 
     Select Case Left(Range("K" & i).Value, 1) 
      Case "B", "M", "D" 
       Select Case Range("O" & i).Value 
        Case "University of Illinois", "UofI" 
         Range("N" & i) = "1234" 
       End Select 
      Case "A" 
       Select Case Range("O" & i).Value 
        Case "New York University", "NYU" 
         Range("N" & i) = "5075" 
       End Select 
     End Select 
    Next i 
End Sub