【解决方案】如何更改excel中指定关键词的字体颜色?——by.北方区平平无奇组织
评论
收藏

【解决方案】如何更改excel中指定关键词的字体颜色?——by.北方区平平无奇组织

经验分享
小曼
2023-08-28 20:54·浏览量:902
小曼
发布于 2023-08-28 20:51更新于 2023-08-28 20:54902浏览

客户的真实需求:

例如,单元格内容是:

设定几个关键词,"北京", "天津", "河南", "四川", "广西", "河北",如果单元格包括“河北”,就将河北二字标红加粗字体增大两号,否则,将其他关键词标蓝加粗字体增大两号。

解决方案:

经过研究,还是通过excel里面的VBA更好实现,效果如下:

VBA代码:

Sub test()
    Dim keysArr As Variant
    Dim current_position As Integer
    Dim endrow As Integer
    Application.ScreenUpdating = False
    With ThisWorkbook.Worksheets("Sheet1")
        endrow = .Range("a1").End(xlDown).Row 'A列最后一行的行号
        For Each rng In .Range("A1" & ":B" & endrow) '循环区域
        keysArr = Array("北京", "天津", "河南", "四川", "广西", "河北") '设置关键词数组
            For i = 0 To UBound(keysArr) '循环关键词数组下标
                n = 1     '设置变量n,用来表示从第几个位置开始查找
                Do While InStr(n, rng, keysArr(i)) > 0   '如果能够找到关键词,则进行循环处理
                    current_position = InStr(n, rng, keysArr(i))  'current_position,表示查找到的关键词的开始位置
                    'MsgBox current_position
                    fsize = rng.Characters(current_position, Len(keysArr(i))).Font.Size     '获取当前字号
                    If keysArr(i) = "北京" Then
                        rng.Characters(current_position, Len(keysArr(i))).Font.ColorIndex = 3   '颜色标红
                        rng.Characters(current_position, Len(keysArr(i))).Font.Bold = True      '字体加粗
                        rng.Characters(current_position, Len(keysArr(i))).Font.Size = fsize + 2 '字号加2
                    Else
                        rng.Characters(current_position, Len(keysArr(i))).Font.ColorIndex = 5   '颜色标蓝
                        rng.Characters(current_position, Len(keysArr(i))).Font.Bold = True      '字体加粗
                        rng.Characters(current_position, Len(keysArr(i))).Font.Size = fsize + 2 '字号加2
                    End If
                    n = current_position + 1
                Loop
            Next i
        Next
    End With
    Application.ScreenUpdating = True
End Sub


收藏2
全部评论1
最新
发布评论
评论