วิธีใช้ 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: วิธีนับเซลล์ด้วยข้อความเฉพาะ

เพิ่มความคิดเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *