2011-04-08 61 views
0

我完全停留在Excel VBA中爲以下問題創建用戶定義函數。任何幫助將不勝感激。需要幫助在Excel中使用VBA創建用戶定義函數

我的excel文件看起來像這樣(只爲了簡潔起見,將一小部分):

 A   B   C   D 
1  Susan  Reagan  Smith   
2  Jill  L  Taylor 
3  Sarah  Sullivan Williams 
4  Roger  J  Lopez 

我想確定一個功能:如果A1 =蘇珊OR吉爾OR撒拉,LEN( B1的串的長度)> 1 THEN D1 = A1/2 B1 C1 ELSE A1/2 C1

所以在列d的輸出如下所示:

 A   B   C   D 
1  Susan  Reagan  Smith  Susan /2 Reagan Smith  
2  Jill  L  Taylor  Jill /2 Taylor 
3  Sarah  Sullivan Williams Sarah /2 Sullivan Williams 
4  Roger  J  Lopez  Roger /2 Lopez 

我想使用VBA,因爲我有許多名字要添加和做並不是真的需要在D1單元格中嵌入大量if語句的巨大公式。我一直在自己的工作,但它只是一團糟,我很尷尬的發佈在這裏。多謝你們!

回答

3
Public Function JoinNames(A, B, C) 
    If FirstNameMatches(A) And Len(B) > 1 Then 
     JoinNames = A & " /2 " & B & " " & C 
    Else 
     JoinNames = A & " /2 " & C 
    End If 
End Function 

Private Function FirstNameMatches(N) As Boolean 
    Select Case N 
     Case "Susan", "Jill", "Sarah" 
      FirstNameMatches = True 
    End Select 
End Function 
0

在表單上的其他位置有一個名稱列表。使用IF(ISNA(MATCH(A1, list_of_names, 0)), "Not found", "Found")來確定名稱是否被識別。