如何在Excel中为姓氏着色

时间:2015-10-19 17:40:04

标签: vba excel-vba excel-2007 excel

我想只为姓氏着色。 例如:

Rohit Kumar Singh
Rahul Ranjan Singh
Kaushal Kishor Singh

我想只为姓氏着色。有或没有vba是可能的。

1 个答案:

答案 0 :(得分:1)

在vba中,这样做:

Sub rohit()
Dim cel As Range
Dim i As Integer
For Each cel In Selection.Cells
    If cel.value <> "" Then
        Dim lastname As String
        if Ubound(Split(cel, " ")) > 0 then
             lastname = Split(cel, " ")(1)
        Else 
             lastname = cel.Value
        End If
        For i = 1 To Len(cel)
            If Mid(cel, i, Len(lastname)) = lastname Then
                cel.Characters(i, Len(lastname)).Font.Color = vbRed
                Exit For
            End If
        Next i
    End If
Next cel

End Sub

这将更改字符串中的第二个单词。

更改单词的关键是使用以下行:

lastname = Split(cel, " ")(1)

Split函数返回一个数组,第一个单词是0,第二个单词是1,依此类推。函数后面的数字指示返回该数组中的哪个单词。

如果单词数量未知且需要最后一个单词,请使用:

lastname = Split(cel, " ")(Ubound(Split(cel, " ")))

这将获取数组的上限或最后一个。如果您希望第二个持续并且它会有所不同,请使用:

lastname = Split(cel, " ")(Ubound(Split(cel, " "))-1)

这将允许您根据所需的模式获得任何单词。

它也基于选择。