Excel-VBA:组合多列表中的字符串数

时间:2018-04-03 06:11:48

标签: vba excel-vba excel

我有一个数据表,包括;

A栏:人名和号码,例如:Alexander25(文字和数字)
B栏:人员代码,例如:AD-4(文字和数字)
C列:人的RingName例如:Alex Cooper(仅文本)

在表中,每列填写A列和B列,而C列是可选的(有时确实有,有时没有)。我想使用VBA创建新列来组合所有这些列来制作这样的东西;
D栏:Alex025 Cooper:AD-4

这只适用于C列存在的情况。列C的名称可能与列A具有相同的文本,但我只想采取不同的内容。例如,如果名字是亚历山大,而戒指名称是Alex Cooper,我只想要只选择Cooper。数量有所不同,最多只能达到3位数。如果数字是;
1位数 - 00x
2位数 - 0xx
3位数 - xxx

如果可能的话,赞赏任何意见。谢谢stackoverflow.com

1 个答案:

答案 0 :(得分:1)

你可以用这个:

Option Explicit

Sub main()
    Dim cell As Range

    For Each cell In Range("C1", Cells(Rows.Count, 3).End(xlUp))
        cell.Offset(, 1).Value = Split(cell.Value, " ")(0) & Format(GetLastDigits(cell.Offset(, -2)), "000") & " " & Split(cell.Value, " ")(1) & ": " & cell.Offset(, -1).Value
    Next
End Sub

Function GetLastDigits(strng As String) As String
    Dim i As Long

    Do While IsNumeric(Right(strng, i + 1))
        i = i + 1
    Loop
    GetLastDigits = Right(strng, i)
End Function