Excel中使用正则表达式

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Excel另类条件化格式

1 前言

我们知道,Excel的条件化格式可以根据单元个的内容来设置整个单元格的格式。如图1中的C列,当单元格的内容为“结束”时,字体颜色为绿色,为“进行中”时,颜色为黄色。但如果我们想把B列的部分特定文字(如日期2012-3-4)设置成不同的字体和颜色, Excel的条件化格式工具是不能实现的,需要另辟蹊径。

图1

2 实现过程

2.1 目标

实现B列单元格中日期字符串的字体设置成“Arial Black”字体,颜色为红色。

2.2 设计思路

Excel的VBA编程功能很强大,可以轻松实现上述目标。程序的设计思路是:找到日期字符串,然后设置字体格式。本例中利用了正则表达式来寻找日期字符串,通过Characters对象的Font属性来设置字符串的格式。

2.3 正则表达式

我们在处理文本时,经常会遇到一些满足某种规则的字符串。比如,一个无符号的整数由一连串的数字构成,本例中的日期是满足“整数-整数-整数”规则的字符串。正则表达式就是用来指定这种规则的。如果某个字符串满足正则表达式指定的规则,则称该字符串为正则表达式的一个“匹配串”。正则表达式中用\d 来匹配单个数字,用\d+来匹配连续的多个数字,这样本例中用"\d+-\d+-\d+"就可以匹配日期字符串。Excel的VBA可以通过引用vbscript中的正则标定式对象"vbscript.regexp"来使用正则表达式。

2.4 Characters函数

语法:Characters(start, length)

参数:Start是指从第几个字符处开始选择,length是要返回的字符数。

返回:Characters对象。用来控件文本中某一范围的字符串。例如,通过Characters对象的Font属性可以设置字符串的字体格式。

2.5程序代码

把FormatClick程序和“更新”按钮的Click事件关联起来,只要点击“更新”按钮就可以更新日期的字体的名称和颜色了。具体程序如下:

Sub FormatClick()

'声明正则表达式对象

Dim RegEx As Object

'引用正则标定式对象

Set RegEx = CreateObject("vbscript.regexp")

'设置正则标定式对象属性

With RegEx

'Global=True意味着在整个搜索字符串时模式是全部匹配,False则只匹配第一个

.Global = True

'设置正则标定式

.Pattern = "\d+-\d+-\d+"

End With

'计算最后的行号

RowNo = [B1024576].End(xlUp).Row

For i = 2 To RowNo

'寻找匹配串

Set Matches = RegEx.Execute(ActiveSheet.Cells(i, 2).Text)

'遍历匹配集合

For Each Match In Matches

'Match.FirstIndex是指匹配的起始位置

'Match.Length是指匹配的长度

With ActiveSheet.Cells(i, 2).Characters(Start:=Match.FirstIndex + 1, Length:=Match.Length).Font

'设置字符串字体的格式

.Name = "Arial Black"

.Color = RGB(255, 0, 0)

End With

Next

Next

'释放正则标定式对象

Set RegEx = Nothing

End Sub

2.6 实现效果

通过简短的几行代码就可以实现预定的目标,如图2。本例只是抛砖引玉,通过VBA编程可以实现更复杂的另类条件化格式。

图2

相关文档
最新文档