需要帮助使用VBA在Excel中创建用户定义的函数吗

需要帮助使用VBA在Excel中创建用户定义的函数吗,excel,vba,user-defined-functions,Excel,Vba,User Defined Functions,对于以下问题,我完全无法在ExcelVBA中创建用户定义的函数。任何帮助都将不胜感激 我的excel文件如下所示(为了简洁起见,只添加了一小部分): 我想要一个函数来确定:如果A1=Susan或Jill或Sarah,并且B1的LEN(字符串长度)大于1,那么D1=A1/2b1c1或者A1/2c1 因此,D列中的输出如下所示: A B C D 1 Susan Reagan Smith Susan

对于以下问题,我完全无法在ExcelVBA中创建用户定义的函数。任何帮助都将不胜感激

我的excel文件如下所示(为了简洁起见,只添加了一小部分):

我想要一个函数来确定:如果A1=Susan或Jill或Sarah,并且B1的LEN(字符串长度)大于1,那么D1=A1/2b1c1或者A1/2c1

因此,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语句的大型公式。我自己也一直在做,但它只是一团乱麻,我很不好意思把它贴在这里。谢谢大家

在工作表的其他地方有一个姓名列表


使用
IF(ISNA(MATCH(A1,名称列表,0)),“Not found”,“found”)
判断名称是否被识别。

在工作表的其他地方有一个名称列表

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
使用
IF(ISNA(匹配(A1,名称列表,0)),“未找到”,“已找到”)
确定名称是否可识别

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