Vba: วิธีตรวจสอบว่าสตริงมีสตริงอื่นหรือไม่


คุณสามารถใช้ฟังก์ชัน Instr() ใน VBA เพื่อตรวจสอบว่าสตริงมีสตริงอื่นหรือไม่

ฟังก์ชันนี้ใช้ไวยากรณ์พื้นฐานต่อไปนี้:

Instr(เริ่มต้น, string1, string2, …)

ทอง:

  • start : ตำแหน่งเริ่มต้นของการค้นหา
  • string1 : สตริงที่จะค้นหา
  • string2 : สตริงที่คุณพยายามค้นหา

ตัวอย่างต่อไปนี้แสดงวิธีใช้ฟังก์ชันนี้ในทางปฏิบัติ

ตัวอย่าง: ใช้ VBA เพื่อตรวจสอบว่าสตริงมีสตริงอื่นหรือไม่

สมมติว่าเรามีชุดข้อมูลต่อไปนี้ใน Excel ที่มีข้อมูลเกี่ยวกับทีมบาสเก็ตบอลต่างๆ:

ตอนนี้ สมมติว่าเราต้องการตรวจสอบว่าแต่ละสตริงในคอลัมน์ Team มี “avs” อยู่ที่ไหนสักแห่งในสตริงหรือไม่

เราสามารถใช้ไวยากรณ์ต่อไปนี้ใน VBA เพื่อตรวจสอบว่าแต่ละสตริงในคอลัมน์ Team มี “avs” หรือไม่ และหากเป็นเช่นนั้น ให้ส่งคืนทั้งแถวในคอลัมน์ D และ E:

 Sub StringContains()
Dim i As Integer , i_num As Integer

For i = 2 To 9
    If InStr(1, LCase(Range(" A " & i)), " avs ") <> 0 Then
        i_num = i_num + 1
        Range(" D " & i_num & " :E " & i_num) = Range(" A " & i & " :B " & i).Value
    End If
Next i
End Sub

เมื่อเราเรียกใช้แมโครนี้ เราได้รับผลลัพธ์ต่อไปนี้:

โปรดทราบว่าแต่ละแถวที่มีสตริง “avs” อยู่ที่ไหนสักแห่งในคอลัมน์ทีมจะถูกส่งกลับในคอลัมน์ D และ E

ในตัวอย่างนี้ มีเพียงสองทีมเท่านั้น (Mavs และ Cavs) ที่มี “avs” อยู่ในคอลัมน์ทีม

หากต้องการค้นหาสตริงอื่น เพียงแทนที่ “avs” ในโค้ดด้านบนด้วยสตริงที่คุณต้องการ

หมายเหตุ #1: ในโค้ด เราใช้ For i = 2 ถึง 9 เนื่องจากเซลล์ A2 ถึง A9 มีสตริงที่เราสนใจ อย่าลังเลที่จะเปลี่ยนช่วงนี้ขึ้นอยู่กับช่วงของเซลล์ที่คุณกำลังมองหา

หมายเหตุ #2 : คุณสามารถค้นหาเอกสารฉบับสมบูรณ์ของฟังก์ชัน Instr() ใน VBA ได้ที่นี่

แหล่งข้อมูลเพิ่มเติม

บทช่วยสอนต่อไปนี้จะอธิบายวิธีดำเนินการงานทั่วไปอื่นๆ โดยใช้ VBA:

VBA: วิธีนับจำนวนอักขระในสตริง
VBA: วิธีนับจำนวนแถวในช่วง
VBA: วิธีคำนวณค่าเฉลี่ยของช่วง

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

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