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: วิธีคำนวณค่าเฉลี่ยของช่วง