将单元格中的名称重新格式化为“ First Initial”。 Excel VBA中的姓氏

时间:2018-10-09 09:44:46

标签: excel vba

正如我的问题的标题所暗示的,我需要列出一个范围内的名称并将其重新格式化,以使它们成为第一个缩写,后跟一个句点和一个空格以及姓氏。例如:

  

John Doe

将成为:

  

J。母鹿

这是我编写的VBA函数,但似乎不起作用:

Function PLAYERNAMEREFORMAT(Ref As Range) As String
    Dim Cell As Range
    Dim fullName As String
    Dim firstName As String
    Dim lastName As String
    Dim initial As String

    For Each Cell In Ref
        fullName = Cell.Value
        firstName = Split(fullName)(0)
        lastName = Split(fullName)(1)
        initial = Left(firstName, 1)
    Next Cell

    PLAYERNAMEREFORMAT = initial + “.” + lastName

End Function

有人知道我的代码有什么问题吗?

2 个答案:

答案 0 :(得分:4)

Option Explicit放在函数顶部。 如果这样做,您的圆点左右的引号Variable not Defined会出现“ ”错误。这些必须是常规引号" "

转到菜单Tools/Options/Editor并选择“需要变量声明”。这样可以确保使用Option Explicit创建任何新模块。

我不明白为什么这不是默认设置。

PS:您还需要在点后添加空格。 ". "

答案 1 :(得分:2)

为此,请尝试使用以下公式代替

例如如果您的名字在单元格B1中,那么

  

= LEFT(B1,1)&“。”&RIGHT(B1,LEN(B1)-SEARCH(“”,B1))