excel中用正则匹配_Excel利用正则表达式匹配和替换内容
近期使用Excel比較多,有一些匹配和替換的內(nèi)容。平常涉及的比較簡(jiǎn)單,也就使用If或者VLOOKUP之類的函數(shù)。這次使用到正則表達(dá)式和VBA,在此記錄一下,以防忘記。
打開文件一定要選擇EXCEL打開,按住ALT+F11,右鍵文件選擇“查看代碼”,輸入代碼:
Private Sub RegExp_Replace()
Dim RegExp As Object
Dim SearchRange As Range, Cell As Range
'此處定義正則表達(dá)式
Set RegExp = CreateObject("vbscript.regexp")
RegExp.Pattern = "^[A-Za-z0-9]+(\-)?[0-9]?$"
#此處匹配所有以字母或數(shù)字開頭的單元格(比如A01,或者A01-1)
'此處指定查找范圍
Set SearchRange = ActiveSheet.Range("A3:A1008")
'遍歷查找范圍內(nèi)的單元格
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")
#此處將單元格的內(nèi)容完全替換成16S
End If
Next
End Sub
點(diǎn)擊
image
執(zhí)行代碼,即可完成所需功能。
image.png
但是遇到不匹配的模式則提示
image.png
另辟途徑解決,還是回歸到我熟悉的IF函數(shù)。雖然有點(diǎn)曲折,但總算解決了我的問題:
反其道兒行知,不匹配的單元格都是#N/A(使用VLOOKUP匹配沒有結(jié)果的單元格),將匹配這個(gè)的單元格記錄為“no”;不匹配的單元格記錄為“yes”。
IF(COUNTIF(A2,"#N/A"),"no","yes")
#COUNTIF是對(duì)滿足條件的單元格計(jì)數(shù)
#理解為如果A2單元格滿足條件,則COUNTIF(A2,"#N/A")返回值為1,
#則滿足了IF的條件,返回值為“no”,反之返回值為“yes”。
總結(jié)
以上是生活随笔為你收集整理的excel中用正则匹配_Excel利用正则表达式匹配和替换内容的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: delphi 函数内创建对象 释放_Ja
- 下一篇: 计算机上的查找替换功能快速格式化,Exc