在excel中重新排列名称

在excel中重新排列名称,excel,substring,vba,Excel,Substring,Vba,在Excel 2010中,我有一列名称,格式为:“Last,First MI”(您可以使用Split将名称部分分隔为一个数组,然后对其进行索引以获得所需的结果: Sub FirstNameFirst() Dim cl As Range, arr As Variant For Each cl In Selection arr = VBA.Split(cl, ",") cl = arr(0) & "," & arr(1) Next cl

在Excel 2010中,我有一列名称,格式为:“Last,First MI”(您可以使用
Split
将名称部分分隔为一个数组,然后对其进行索引以获得所需的结果:

Sub FirstNameFirst()
Dim cl As Range, arr As Variant
    For Each cl In Selection
        arr = VBA.Split(cl, ",")
        cl = arr(0) & "," & arr(1)
    Next cl
End Sub

另一种方法是使用
InStrRev

Sub test()
    Dim oCell As Range, i as Integer

    For Each oCell In Selection
        i = InStrRev(oCell, " ")
        If i <> 0 Then
            oCell = Left(oCell, i - 1)
        End If
    Next oCell
End Sub
子测试()
Dim oCell作为范围,i作为整数
对于选择中的每个oCell
i=仪表板(oCell,“”)
如果我是0那么
oCell=左(oCell,i-1)
如果结束
下奥塞尔
端接头

嗨,Alex。谢谢你的快速输入。你的程序只是在逗号后添加一个额外的空格。嗯。在Excel 2010上输入
“Last,First,MI”
返回
“Last,First”
。我已经修改了上面的代码,因为它确实添加了一个额外的空格!你知道吗?我的傻瓜…我的数据没有第二个逗号。应该是“最后,第一米"我会附上我的原始帖子谢谢你的回复!我们马上就到了…你的代码只留下了姓氏。@AnalyzeThis,只是再次测试了一下,效果很好。注意,我使用的是
InStrRev
,但不是
InStr
,啊,是的…这现在更有意义了。从Acces到Excel的转换并不完美。非常感谢你您的输入:)
Sub test()
    Dim oCell As Range, i as Integer

    For Each oCell In Selection
        i = InStrRev(oCell, " ")
        If i <> 0 Then
            oCell = Left(oCell, i - 1)
        End If
    Next oCell
End Sub