我有一个表格,其中我在第二行开始的第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
非常感谢!
答案 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