นิพจน์ทั่วไปใช้สำหรับการจับคู่รูปแบบ
วิธีใช้ใน Excel ทำตามขั้นตอนเหล่านี้:
ขั้นตอนที่ 1 : เพิ่มการอ้างอิง VBA ใน "Microsoft VBScript Regular Expressions 5.5"
- เลือกแท็บ "นักพัฒนา" ( ฉันไม่มีแท็บนี้ฉันจะทำอย่างไร )
- เลือกไอคอน "Visual Basic" จากส่วน 'Code'
- ในหน้าต่าง "Microsoft Visual Basic สำหรับแอปพลิเคชัน" เลือก "เครื่องมือ" จากเมนูด้านบน
- เลือก "การอ้างอิง"
- ทำเครื่องหมายที่ช่องถัดจาก "Microsoft VBScript Regular Expressions 5.5" เพื่อรวมไว้ในสมุดงานของคุณ
- คลิก "ตกลง"
ขั้นตอนที่ 2 : กำหนดรูปแบบของคุณ
คำจำกัดความพื้นฐาน:
- พิสัย.
- เช่น
a-zจับคู่ตัวอักษรพิมพ์เล็กจาก a ถึง z
- เช่น
0-5จับคู่หมายเลขใด ๆ จาก 0 ถึง 5
[] จับคู่หนึ่งในวัตถุภายในวงเล็บเหล่านี้
- เช่น
[a]ตรงกับตัวอักษร
- เช่น
[abc]จับคู่อักษรเดี่ยวซึ่งอาจเป็น a, b หรือ c
- เช่น
[a-z]จับคู่อักษรตัวพิมพ์เล็กใด ๆ ของตัวอักษร
()จับคู่กลุ่มที่แตกต่างกันเพื่อวัตถุประสงค์ในการคืนสินค้า ดูตัวอย่างด้านล่าง
{} ตัวคูณสำหรับสำเนาซ้ำของรูปแบบที่กำหนดไว้ก่อนหน้า
- เช่น
[a]{2}จับคู่อักษรตัวพิมพ์เล็กสองตัวติดต่อกัน a:aa
- เช่น
[a]{1,3}ตรงกับอย่างน้อยหนึ่งถึงสามล่างตัวอักษรกรณีa, aa,aaa
+ จับคู่รูปแบบที่กำหนดไว้ก่อนหน้าอย่างน้อยหนึ่งรูปแบบขึ้นไป
- เช่น
a+จะตรงกับการติดต่อกันของa, aa, aaaและอื่น ๆ
? จับคู่ศูนย์หรือหนึ่งในรูปแบบที่กำหนดไว้ก่อนหน้า
- เช่นรูปแบบอาจมีหรือไม่มีอยู่ แต่สามารถจับคู่ได้เพียงครั้งเดียวเท่านั้น
- เช่น
[a-z]?จับคู่สตริงว่างหรืออักษรตัวพิมพ์เล็กใด ๆ
* จับคู่รูปแบบที่กำหนดไว้ก่อนหน้าศูนย์หรือมากกว่านั้น - เช่นสัญลักษณ์แทนสำหรับรูปแบบที่อาจมีหรือไม่มีอยู่ - เช่น[a-z]*จับคู่สตริงว่างหรือสตริงตัวอักษรตัวพิมพ์เล็ก
. ตรงกับตัวละครใด ๆ ยกเว้นการขึ้นบรรทัดใหม่ \n
- เช่น
a.จับคู่สตริงอักขระสองตัวที่ขึ้นต้นด้วย a และลงท้ายด้วยอะไรก็ได้ยกเว้น\n
| หรือผู้ประกอบการ
- เช่น
a|bหมายถึงอย่างใดอย่างหนึ่งaหรือbสามารถจับคู่
- เช่น
red|white|orangeตรงกับหนึ่งในสีทั้งหมด
^ ไม่ใช่ผู้ประกอบการ
[^0-9]อักขระเช่นต้องไม่มีตัวเลข
- เช่น
[^aA]ตัวอักษรต้องไม่เป็นตัวพิมพ์เล็กaหรือตัวพิมพ์ใหญ่A
\ หนีอักขระพิเศษที่ตามมา (แทนที่เหนือพฤติกรรม)
- เช่น
\., \\, \(, \?, \$,\^
รูปแบบการยึด:
^ การจับคู่จะต้องเกิดขึ้นที่จุดเริ่มต้นของสตริง
- เช่น
^aตัวอักษรตัวแรกต้องเป็นตัวอักษรพิมพ์เล็กa
- เช่น
^[0-9]อักขระตัวแรกต้องเป็นตัวเลข
$ การจับคู่จะต้องเกิดขึ้นที่ส่วนท้ายของสตริง
- เช่น
a$ตัวอักษรตัวสุดท้ายจะต้องเป็นตัวอักษรพิมพ์เล็กa
ตารางที่สำคัญกว่า:
Order Name Representation
1 Parentheses ( )
2 Multipliers ? + * {m,n} {m, n}?
3 Sequence & Anchors abc ^ $
4 Alternation |
ตัวย่อที่กำหนดไว้ล่วงหน้า:
abr same as meaning
\d [0-9] Any single digit
\D [^0-9] Any single character that's not a digit
\w [a-zA-Z0-9_] Any word character
\W [^a-zA-Z0-9_] Any non-word character
\s [ \r\t\n\f] Any space character
\S [^ \r\t\n\f] Any non-space character
\n [\n] New line
ตัวอย่างที่ 1 : เรียกใช้เป็นมาโคร
ตัวอย่างแมโครต่อไปนี้จะดูค่าในเซลล์A1เพื่อดูว่าอักขระ 1 หรือ 2 ตัวแรกเป็นตัวเลขหรือไม่ ถ้าเป็นเช่นนั้นจะถูกลบออกและส่วนที่เหลือของสตริงจะปรากฏขึ้น ถ้าไม่เช่นนั้นจะมีกล่องปรากฏขึ้นเพื่อบอกคุณว่าไม่พบข้อมูลที่ตรงกัน A1ค่าเซลล์ของ12abcจะคืนabcค่าของ1abcจะกลับมาabcมูลค่าของabc123จะกลับมา "ไม่ตรงกัน" เพราะตัวเลขไม่ได้อยู่ที่จุดเริ่มต้นของสตริง
Private Sub simpleRegex()
Dim strPattern As String: strPattern = "^[0-9]{1,2}"
Dim strReplace As String: strReplace = ""
Dim regEx As New RegExp
Dim strInput As String
Dim Myrange As Range
Set Myrange = ActiveSheet.Range("A1")
If strPattern <> "" Then
strInput = Myrange.Value
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.Test(strInput) Then
MsgBox (regEx.Replace(strInput, strReplace))
Else
MsgBox ("Not matched")
End If
End If
End Sub
ตัวอย่างที่ 2 : เรียกใช้เป็นฟังก์ชันในเซลล์
ตัวอย่างนี้เหมือนกับตัวอย่างที่ 1 แต่เป็นการตั้งค่าให้เรียกใช้เป็นฟังก์ชันในเซลล์ วิธีใช้ให้เปลี่ยนรหัสเป็น:
Function simpleCellRegex(Myrange As Range) As String
Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim strReplace As String
Dim strOutput As String
strPattern = "^[0-9]{1,3}"
If strPattern <> "" Then
strInput = Myrange.Value
strReplace = ""
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.test(strInput) Then
simpleCellRegex = regEx.Replace(strInput, strReplace)
Else
simpleCellRegex = "Not matched"
End If
End If
End Function
วางสายของคุณ ( "12abc") A1ในเซลล์ ป้อนสูตรนี้=simpleCellRegex(A1)ในเซลล์B1และผลลัพธ์จะเป็น "abc"

ตัวอย่างที่ 3 : วนรอบช่วง
ตัวอย่างนี้เหมือนกับตัวอย่างที่ 1 แต่วนลูปผ่านช่วงของเซลล์
Private Sub simpleRegex()
Dim strPattern As String: strPattern = "^[0-9]{1,2}"
Dim strReplace As String: strReplace = ""
Dim regEx As New RegExp
Dim strInput As String
Dim Myrange As Range
Set Myrange = ActiveSheet.Range("A1:A5")
For Each cell In Myrange
If strPattern <> "" Then
strInput = cell.Value
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.Test(strInput) Then
MsgBox (regEx.Replace(strInput, strReplace))
Else
MsgBox ("Not matched")
End If
End If
Next
End Sub
ตัวอย่างที่ 4 : แยกรูปแบบที่แตกต่าง
ตัวอย่างนี้วนลูปผ่านช่วง ( A1, A2& & A3) และค้นหาสตริงที่ขึ้นต้นด้วยตัวเลขสามหลักตามด้วยอักขระอัลฟ่าหนึ่งตัวและตามด้วยตัวเลข 4 หลัก ()แยกเอาท์พุทออกจากกันตรงรูปแบบการเข้าสู่เซลล์ที่อยู่ติดกันโดยใช้ หมายถึงรูปแบบครั้งแรกที่จับคู่ภายในชุดแรกของ$1()
Private Sub splitUpRegexPattern()
Dim regEx As New RegExp
Dim strPattern As String
Dim strInput As String
Dim Myrange As Range
Set Myrange = ActiveSheet.Range("A1:A3")
For Each C In Myrange
strPattern = "(^[0-9]{3})([a-zA-Z])([0-9]{4})"
If strPattern <> "" Then
strInput = C.Value
With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
If regEx.test(strInput) Then
C.Offset(0, 1) = regEx.Replace(strInput, "$1")
C.Offset(0, 2) = regEx.Replace(strInput, "$2")
C.Offset(0, 3) = regEx.Replace(strInput, "$3")
Else
C.Offset(0, 1) = "(Not matched)"
End If
End If
Next
End Sub
ผล:

ตัวอย่างรูปแบบเพิ่มเติม
String Regex Pattern Explanation
a1aaa [a-zA-Z][0-9][a-zA-Z]{3} Single alpha, single digit, three alpha characters
a1aaa [a-zA-Z]?[0-9][a-zA-Z]{3} May or may not have preceding alpha character
a1aaa [a-zA-Z][0-9][a-zA-Z]{0,3} Single alpha, single digit, 0 to 3 alpha characters
a1aaa [a-zA-Z][0-9][a-zA-Z]* Single alpha, single digit, followed by any number of alpha characters
</i8> \<\/[a-zA-Z][0-9]\> Exact non-word character except any single alpha followed by any single digit