700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > excel中用正则匹配_Excel利用正则表达式匹配和替换内容

excel中用正则匹配_Excel利用正则表达式匹配和替换内容

时间:2022-10-17 14:34:12

相关推荐

excel中用正则匹配_Excel利用正则表达式匹配和替换内容

近期使用Excel比较多,有一些匹配和替换的内容。平常涉及的比较简单,也就使用If或者VLOOKUP之类的函数。这次使用到正则表达式和VBA,在此记录一下,以防忘记。

打开文件一定要选择EXCEL打开,按住ALT+F11,右键文件选择“查看代码”,输入代码:

Private Sub RegExp_Replace()

Dim RegExp As Object

Dim SearchRange As Range, Cell As Range

'此处定义正则表达式

Set RegExp = CreateObject("vbscript.regexp")

RegExp.Pattern = "^[A-Za-z0-9]+(\-)?[0-9]?$"

#此处匹配所有以字母或数字开头的单元格(比如A01,或者A01-1)

'此处指定查找范围

Set SearchRange = ActiveSheet.Range("A3:A1008")

'遍历查找范围内的单元格

For Each Cell In SearchRange

Set Matches = RegExp.Execute(Cell.Value)

If Matches.Count >= 1 Then

Set Match = Matches(0)

Cell.Value = RegExp.Replace(Cell.Value, "16S")

#此处将单元格的内容完全替换成16S

End If

Next

End Sub

点击

image

执行代码,即可完成所需功能。

image.png

但是遇到不匹配的模式则提示

image.png

另辟途径解决,还是回归到我熟悉的IF函数。虽然有点曲折,但总算解决了我的问题:

反其道儿行知,不匹配的单元格都是#N/A(使用VLOOKUP匹配没有结果的单元格),将匹配这个的单元格记录为“no”;不匹配的单元格记录为“yes”。

IF(COUNTIF(A2,"#N/A"),"no","yes")

#COUNTIF是对满足条件的单元格计数

#理解为如果A2单元格满足条件,则COUNTIF(A2,"#N/A")返回值为1,

#则满足了IF的条件,返回值为“no”,反之返回值为“yes”。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。