如何在VBA中将姓名首字母与姓氏分开

时间:2018-03-09 05:57:54

标签: vba excel-vba excel

我有一个表格,其中我在第二行开始的第B列中有首字母和姓氏,因为第一行有标题。

如何创建一个宏,使其遍历每个名​​称,并按以下方式将姓氏首字母与姓氏分开:

B列 - 第一个初始,C列 - 第二个初始(如果存在),D列是可以包含两个名称的姓。首字母总是一个字母,第二个字母可能不存在,如下例所示:

T W Stephens将在以下列中列出 B栏 - T栏,C栏 - W栏,D栏 - 斯蒂芬斯

S Russ B栏 - S栏,C栏 - 空,D栏 - Russ

P P Costa B栏 - P栏,C栏 - 空,D栏 - De Costa

约翰保罗 B栏 - S栏,C栏 - B栏,D栏 - John Paul

非常感谢!

1 个答案:

答案 0 :(得分:1)

试试此代码

Sub Test()
Dim a           As Variant
Dim b           As Variant
Dim x           As Variant
Dim s           As String
Dim i           As Long
Dim j           As Long

a = Range("B2:B" & Cells(Rows.Count, 2).End(xlUp).Row).Value
ReDim b(1 To UBound(a, 1), 1 To 3)

For i = LBound(a, 1) To UBound(a, 1)
    x = Split(Trim(a(i, 1)))
    j = j + 1: s = ""

    If Len(Trim(x(0))) = 1 Then b(j, 1) = x(0): s = x(0) & " "
    If Len(Trim(x(1))) = 1 Then b(j, 2) = x(1): s = s & x(1) & " "
    b(j, 3) = Trim(Replace(a(i, 1), s, ""))
Next i

Range("B2").Resize(UBound(b, 1), UBound(b, 2)).Value = b
End Sub