根据条件在单元格中翻转名称

问题描述 投票:0回答:1

我在列R个人名称和组织名称中有一个名称列表。个人姓名采用格式(名字姓氏)。在列Q中,提到了类型名称(个人或组织)。仅对于个人姓名,我想在列U中以格式(姓氏名字)翻转个人姓名。我为此做了一个代码。但在某个地方我错过了一个逻辑。有人可以帮忙吗?谢谢

    Sub Nameflip()
'
' Nameflip Macro
'

'
    Dim sht As Worksheet
    Dim LR As Long
    Dim i As Long
    Dim myformula As String

    Set sht = ActiveWorkbook.Worksheets("ORD_CS")

    With sht
        LR = .Cells(.Rows.Count, "N").End(xlUp).Row
        myformula = "=Right(R2, Len(R2) - Find("" "", R2)) & "" "" & Left(R2, Find("" "", R2) - 1)"

        For i = 2 To LR
            If .Range("Q" & i).Value = "P" Then
               .Range("U" & i) = Application.Evaluate(myformula)
            End If
        Next i
    End With
End Sub
excel vba excel-vba
1个回答
0
投票

我会使用split函数,因为它比你的公式更容易阅读:

Sub Nameflip()
    Dim sht As Worksheet
    Dim LR As Long
    Dim i As Long
    Dim vSplit As Variant

    Set sht = ActiveWorkbook.Worksheets("ORD_CS")
    With sht
        LR = .Cells(.Rows.Count, "N").End(xlUp).Row
        For i = 2 To LR
            If CStr(.Range("Q" & i).Value) = "P" Then
               .Range("U" & i) = Split(CStr(.Range("R" & i)))(1) & ", " & Split(CStr(.Range("R" & i)))(0)
            End If
        Next i
    End With
End Sub

我假设全名来源在R列中,所以你可能需要调整一下列字母。

© www.soinside.com 2019 - 2024. All rights reserved.