Excel批量使单元格指定文字之后的内容字体变红色,别人一天的活儿,你只要5秒!
前言|职场实例
今天遇到这样的一个Excel职场实际案例,感觉非常的有意义,如果真要是在工作中遇到,肯定会帮我们的大忙。
问题原型是这样的:
Excel中如何批量的从指定文字往后的内容都变成红色字体?
实际中的数据量相当的大,但是有一点肯定的是:每个单元格中的数据都有一个相同的文本,我们指定这个文本往后改变字体的颜色。
我们用一个简单的数据模型模拟真实的职场案例。
如下图所示:
左边表格中是地名数据,我们如何使每个单元格数据中“省”字后面的文本字体全部变为红色字体,最后效果如右边表格所示那样。
01|效率低效法:逐个更改
初入职场的小白可能会选择“逐个更改”的笨法。
鼠标一个一个选中每个单元格“省”字后面的文字,分别点击“字体-颜色-红色”。
使用这种方法的话,如果数据量小,就有几个或者10几个数据,完全可以。但是面对成百上千的数据量,就显得很无力了。
02|失败方法:合并符&并不能合并格式
有些小伙伴可能这样开始幻想了:
我们可以先按“省”字作为分隔符号进行分列,将“省”字后面的内容分出来后,设置红色字体颜色。最后再合并不就可以了吗。好吧,我们来试试看看可不可以实现。
我们先在A列和B列之间插入两列。然后选中A列数据,点击“数据-分列”,然后弹出“文本分列向导”对话框,点击“下一步”,在分隔符号框内输入“省”,继续点击“下一步”,最后点击“完成”。即可将“省”字后面的内容分列到B列。
然后我们对B列的数据设置字体颜色-红色。
我们再在C列输入公式,将A列与B列数据合并恢复原样。
在C2单元格输入函数公式:
=A2&"省"&B2
下拉填充公式后,我们发现合并符&并不能合并字体颜色格式。所以这种方法失败了。就算是即使成功了,那么如果数据量有1000列,那么要分列+公式反复操作1000次,效率也是不现实的。
03|高效率方法:VBA代码法5秒完成
上面2种方法都很不现实。下面介绍VBA代码的方法5秒轻松搞定,代码是固定模板格式的,只需简单复制粘贴运行代码即可。
我们鼠标右击工作表“Excel情报局”名称标签,点击“查看代码”,进入VBA代码编辑界面,将下面一段VBA代码复制粘贴进去。然后点击上方的“运行-运行子过程/用户窗体”。运行完毕后,关闭VBA代码窗口,返回到Excel表格时,我们惊喜的发现:所有单元格中“省”字后面的内容字体颜色都变为了红色。非常的给力!
Sub FormatCell()
Dim color As Long
Dim target As String
Dim source As Range
Dim current As Range
Set source = Range("A2:B7")
target = "省"
color = -16776961
For Each current In source
Debug.Print current
Debug.Print InStr(1, current.Text, target)
Debug.Print Len(current.Text) - InStr(1, current.Text, target)
Start = InStr(1, current.Text, target) + 1
Length = Len(current.Text) - InStr(1, current.Text, target)
current.Characters(Start:=Start, Length:=Length).Font.color = color
Next
'Range("A1").Characters(Start:=4,Length:=6).Font.color = color
End Sub
注意:
代码结构是固定,只有下面三个地方需要根绝我们实际的表格区域布局进行灵活的更改即可。
①Set source = Range("A2:B7"):
在本例中代表我们需要处理的A2:B7数据区域。
②target = "省":
在本例中代表“省”字后面的内容。
③color = -16776961:
在本例中代表字体颜色索引,“-16776961”代表红色字体。