首页 > 解决方案 > 从电子邮件格式 firstname.lastname@email.com 中提取名字和姓氏的 VBA 代码

问题描述

我想创建一个 vba 代码,它从电子邮件格式 firstname.lastname@email.com 中提取名字和姓氏

以下公式有效,但我希望它们作为 vba 代码,以便我可以将其用作我已设置的调用模块列表的一部分。

名字 =LEFT(LEFT(A2,FIND(".",A2)-1),FIND("@",A2)-1)

姓 =LEFT(RIGHT(A2,LEN(A2)-FIND(".",A2)),FIND("@",RIGHT(A2,LEN(A2)-FIND(".",A2)))- 1)

名字将从 B2 列开始,姓氏将从 C2 列开始。

谢谢!

标签: excelvba

解决方案


作为用户定义的函数

Option Explicit

Function GetName(s As String, i As Integer) As String
    Dim ar As Variant
    ar = Split(Left(s, InStr(1, s, "@") - 1), ".")
    If i > 0 Then i = UBound(ar) ' allow for middle names
    GetName = ar(i)
End Function

Sub test()
    Dim i, ws: Set ws = ActiveSheet
    For i = 2 To 10
        ws.Range("B" & i).FormulaR1C1 = "=GetName(RC[-1],0)" '  0=firstname
        ws.Range("C" & i).FormulaR1C1 = "=GetName(RC[-2],1)"  ' 1=lastname
    Next
End Sub

推荐阅读