2011-04-08 51 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")来确定名称是否被识别。