如何将 Excel 公式转换为 UDF?

How to turn an Excel formula into a UDF?

我有一个公式可以在格式为 "Smith, John".

的单元格中交换姓氏和名字
=MID(A4&" "&A4,(FIND(" ",A4)+1),(LEN(A4)-1))

我创建了一个函数来利用此功能,一开始它似乎可以正常工作。函数为:

Function SwapNames(text As String) As String SwapNames = Mid(text & " " & text, (Find(" ", text) - 1, (Len(text) - 1)) End Function

我将我的工作簿转换为加载项文件类型,以便我可以在全局范围内使用它,但现在它说查找函数未定义。我在这里做错了什么?

如@Nathan_Sav 所说 - 使用拆分,也许还有一个可选参数来标识分隔符。

所以 =swapnames("Bartrup-Cook Darren") returns "Darren Bartrup-Cook" 和 =swapnames("Bartrup-Cook Darren","-") returns "Cook Darren Bartrup" 如果分隔符不正确,则返回 #REF! 错误' 出现在字符串中。

Function SwapNames(text As String, Optional Delimiter As String = " ") As Variant

    Dim SplitAt As Long
    Dim NamePart As Variant

    SplitAt = InStr(text, Delimiter)

    If SplitAt = 0 Then
        SwapNames = CVErr(xlErrRef)
    Else
        NamePart = Split(text, Delimiter)

        SwapNames = NamePart(1) & " " & NamePart(0)
    End If

End Function

这就是您如何使用 Split 函数和交换名称。

Function SwapNames(text As String) As String
    SwapNames = Trim(Split(text, ",")(1)) & " " & Trim(Split(text, ",")(0))
End Function

所以它会将Smith, John更改为John Smith,将Smith, John J更改为John J Smith