วิธีใช้ wildcards ใน vba (พร้อมตัวอย่าง)
คุณสามารถใช้ตัวดำเนินการ Like ใน VBA กับไวด์การ์ดในตัวต่อไปนี้เพื่อค้นหารูปแบบเฉพาะในสตริง:
- * : จับคู่อักขระจำนวนเท่าใดก็ได้
- ? : จับคู่อักขระตัวเดียว
- # : สอดคล้องกับตัวเลขหลักเดียว
- [] : จับคู่อักขระใดๆ ภายในช่วง
ตัวอย่างต่อไปนี้แสดงวิธีใช้ไวด์การ์ดเหล่านี้ในทางปฏิบัติ
ตัวอย่างที่ 1: ใช้ *Wildcard เพื่อค้นหาสตริงย่อย
สมมติว่าเรามีรายการอาหารต่อไปนี้ในคอลัมน์ A:
เราสามารถสร้างแมโครต่อไปนี้เพื่อค้นหาสตริงย่อย “hot” ในแต่ละสตริงในคอลัมน์ A และแสดงผลลัพธ์ในคอลัมน์ B:
Sub FindString()
Dim i As Integer
For i = 2 To 10
If Range(" A " & i) Like " *hot* " Then
Range(" B " & i) = " Contains hot "
Else
Range(" B " & i) = " Does Not Contain hot "
End If
Next i
End Sub
เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:
ตัวอย่างที่ 2: ใช้อักขระตัวแทน * เพื่อค้นหาสตริงที่ลงท้ายด้วยรูปแบบ
สมมติว่าเรามีรายชื่อทีมบาสเกตบอลในคอลัมน์ A ต่อไปนี้:
เราสามารถสร้างแมโครต่อไปนี้เพื่อค้นหาสตริงในคอลัมน์ A ที่ลงท้ายด้วย “ets” และแสดงผลลัพธ์ในคอลัมน์ B:
Sub FindEndingString()
Dim i As Integer
For i = 2 To 10
If Range(" A " & i) Like " *ets " Then
Range(" B " & i) = " Ends in ets "
Else
Range(" B " & i) = " Does Not End in ets "
End If
Next i
End Sub
เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:
ตัวอย่างที่ 3: ใช้สัญลักษณ์แทน # เพื่อค้นหาตัวเลข
สมมติว่าเรามีรายการสตริงต่อไปนี้ในคอลัมน์ A:
เราสามารถสร้างแมโครต่อไปนี้เพื่อค้นหาสตริงในคอลัมน์ A ที่มีตัวเลขและแสดงผลลัพธ์ในคอลัมน์ B:
SubFindNumbers ()
Dim i As Integer
For i = 2 To 10
If Range(" A " & i) Like " *#* " Then
Range(" B " & i) = " Contains Numbers "
Else
Range(" B " & i) = " Does Not Contain Numbers "
End If
Next i
End Sub
เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:
ตัวอย่างที่ 4: ใช้ไวด์การ์ด [] เพื่อค้นหาอักขระหลายตัว
สมมติว่าเรามีรายชื่อทีมบาสเกตบอลในคอลัมน์ A ต่อไปนี้:
เราสามารถสร้างแมโครต่อไปนี้เพื่อค้นหาคอลัมน์ A เพื่อหาสตริงที่มี r, s หรือ t ที่ใดที่หนึ่งในชื่อทีมและแสดงผลลัพธ์ในคอลัมน์ B:
Sub FindSpecificLetters()
Dim i As Integer
For i = 2 To 10
If Range(" A " & i) Like " *[rt]* " Then
Range(" B " & i) = " Contains r, s, or t "
Else
Range(" B " & i) = " Does Not Contain r, s or t "
End If
Next i
End Sub
เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:
หมายเหตุ : คุณสามารถดูเอกสารประกอบ VBA wildcard ฉบับสมบูรณ์ได้ ที่นี่
แหล่งข้อมูลเพิ่มเติม
บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ โดยใช้ VBA:
VBA: วิธีนับจำนวนอักขระในสตริง
VBA: วิธีตรวจสอบว่าสตริงมีสตริงอื่นหรือไม่
VBA: วิธีนับเซลล์ด้วยข้อความเฉพาะ