1、相信很多人最先想到的是使用替换的方法把指定的字符改成所需的颜色,我也不例外,但实际没有替换成功。(滠锖斟绸此步仅用于验证,可以忽略)(1)使用【Ctrl+H】组合键调出“查找和替换”对话框,在“查找内容”输入框里面输入“!”。(2)“替换为”输入框里面输入“!”,点击【格式】,在【字体】里面的“颜色”下方选择红色,再点击【确定】。(3)点击【全部替换】,回到工作表界面,发现所有含有与之相关字符的单元格的字体都变成了红色,只是单独含有指定字符的单元格算是成功。
2、上面使用普通方法行不通,那就使用VBA程序来处理。依次点击【开发工具】、【Visual Basic】调出VBA编辑器。如果菜单栏上面没有显示出【开发工具】,可以直接使用【Alt+F11】组合键调出VBA编辑器。
3、依次点击【插入】、【模块】插入模块代码框。(当然,也可以直接在Sheet1的代码框里面写代码,这主要出于个人习惯吧)
4、在模块代码框里面输入以下VBA程序代码,然后按【F5】键运行程序。Sub ColorInset()Dim str, i1, i2, i泌驾台佐3, i4, i5, arr, arrcolOn Error Resume NextSet mysheet1 = ThisWorkbook.Worksheets("Sheet1") '定义工作表Sheet1arr = Array("!", "$", "*") '定义查找的字符组arrcol = Array(RGB(255, 0, 0), RGB(255, 0, 255), RGB(0, 0, 255)) '定义改变颜色组For i1 = 2 To 1000 '从第2行到1000行For i6 = 1 To 3 '从第1列到第3列 i5 = -1 'i5初始化为-1 For Each str In arr '对定义查找的字符组里面逐个查找执行 i2 = UBound(Split(mysheet1.Cells(i1, i6), str)) '获取数组个数 i4 = 0 'i4初始化为0 i5 = i5 + 1 '执行完第一个查找的字符,i5递增1 For i3 = 0 To i2 '对分割的数组个数逐一执行 i4 = InStr(i4 + 1, mysheet1.Cells(i1, i6), str) '获取对应字符所在的位置 If i4 <> 0 Then '如果存在对应的字符,则改变成需要的颜色 mysheet1.Cells(i1, i6).Characters(i4, 1).Font.Color = arrcol(i5) End If Next NextNextNextEnd Sub
5、回到Excel工作表界面,将会看到执行的结果。
6、简单的几行VBA程序代码就可以解决一个大问题,在此也分享一下程序代艨位雅剖码的含义和思路,以便在以后能够发挥攉淠艇髋它的作用。(1)Array是数组函数,把字符放进去并用逗号隔开就成了数组的集合,后面再使用“For Each……In……Next”循环程序逐一访问提取,这将使得写入的代码变得简洁。由于数组默认的序号是从0开始的,所以,“i5”的初始值就赋给“-1”,以便后续获取的颜色从第0个开始。(2)Split函数是根据指定的字符(如:!)把单元格里面字符划分成一个数组集,UBound函数则是获取数组集里面数组的个数(顺序是从0开始的,只有一个则为0),它们结合使用也可以大致判断出有多少个指定的字符(如:!),便于后续使用For循环按照大致的个数找到指定的字符并改变颜色,避免逐一查找而浪费时间。(3)InStr函数是获取指定字符(如:!)所在的位置(如果找不着,则为0),再由它告诉Characters函数要改变颜色的指定字符(如:!)所在的位置,然后把指定字符改成所需的颜色。