สารบัญ
หากคุณกำลังมองหาวิธีที่ง่ายที่สุดในการค้นหาสตริงย่อยโดยใช้ VBA แสดงว่าคุณมาถูกที่แล้ว หลังจากอ่านบทความนี้แล้ว คุณจะสามารถค้นหาตำแหน่งของสตริงย่อยหรือแยกข้อมูลโดยใช้สตริงย่อยนี้ หรือเปลี่ยนรูปแบบของสตริงย่อยได้อย่างง่ายดาย เข้าสู่บทความกัน
ดาวน์โหลดสมุดงาน
เนื้อหาตัวอย่าง
9 วิธีในการค้นหาสตริงย่อยโดยใช้ VBA
ที่นี่ ฉันมีดังต่อไปนี้ ตารางข้อมูล โดยผมจะแสดงวิธีการหา substring ใน string โดยใช้ VBA ฉันจะพยายามแสดงวิธีการค้นหาสตริงย่อยในสตริงสุ่ม
ฉันได้ทำงานนี้โดยใช้เวอร์ชัน Microsoft Excel 365 คุณสามารถใช้เวอร์ชันอื่นตามความสะดวกของคุณ
วิธีที่ 1: การค้นหาสตริงย่อยในสตริงโดยใช้ VBA
ถ้าคุณต้องการค้นหาสตริงย่อยที่ต้องการในสตริงโดยใช้ VBA คุณสามารถใช้ ฟังก์ชัน InStr ในโค้ด VBA
ขั้นตอนที่ 01 :
➤ไปที่ นักพัฒนาซอฟต์แวร์ แท็บ >> Visual Basic ตัวเลือก
จากนั้น Visual Basic Editor จะเปิดขึ้น
➤ไปที่ แทรก แท็บ>> โมดูล ตัวเลือก
หลังจากนั้น โมดูล จะถูกสร้างขึ้น
Step-02 :
➤เขียนโค้ดต่อไปนี้
8382
ที่นี่ InStr(1, “ ฉันคิดว่าฉันเป็น”, “คิด”) จะส่งคืนตำแหน่งของสตริงย่อยของสตริง 1 คือตำแหน่งเริ่มต้น “ ฉันคิดว่าฉันเป็น” คือสตริงที่คุณจะพบสตริงย่อยที่คุณต้องการ และ “คิดว่า” คือสตริงย่อยที่คุณต้องการค้นหา โดยค่าเริ่มต้นจะคำนึงถึงตัวพิมพ์เล็กและใหญ่ ดังนั้นโปรดระวังตัวพิมพ์เล็กของสตริงย่อยที่คุณต้องการค้นหา
➤กด F5
ผลลัพธ์ :
หลังจากนั้น คุณจะได้รับ กล่องข้อความ ต่อไปนี้ซึ่งมีตำแหน่งของสตริงย่อย “คิดว่า”
วิธีที่ 2: การค้นหาสตริงย่อยที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ในสตริง
หากคุณต้องการค้นหาสตริงย่อยที่ต้องการในสตริงโดยไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่โดยใช้ VBA ให้ทำตามนี้ วิธีการ
ขั้นตอนที่ 01 :
➤ติดตาม ขั้นตอนที่ 01 ของ วิธีการที่ 1
2176
ที่นี่ vbTextCompare ใช้เพื่อค้นหาสตริงย่อยที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่
➤กด F5
ผลลัพธ์ :
จากนั้น คุณจะได้รับ กล่องข้อความ ต่อไปนี้ซึ่งมีตำแหน่งของสตริงย่อย “คิดว่า”
<0คุณสามารถทำได้เช่นเดียวกันโดยใช้รหัสต่อไปนี้
4788
ที่นี่ ตัวเลือกเปรียบเทียบข้อความ จะพบสตริงย่อยที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่
➤กด F5
ผลลัพธ์ :
หลังจากนั้น คุณจะ จะได้รับ กล่องข้อความ ที่มีตำแหน่งของสตริงย่อย “คิดว่า” ต่อไปนี้
วิธีที่ 3: การใช้ฟังก์ชัน InstrRev ใน VBA
ที่นี่ ผมจะแสดงวิธีค้นหาสตริงย่อยจากจุดสิ้นสุดของ aสตริง
ขั้นตอน-01 :
➤ติดตาม ขั้นตอน-01 ของ วิธีการ-1
6400
InStrRev จะค้นหาสตริงย่อยจากด้านขวาแทนที่จะเป็นด้านซ้าย
➤กด F5
ผลลัพธ์ :
จากนั้น คุณจะได้รับ กล่องข้อความ ต่อไปนี้ซึ่งมีตำแหน่งของสตริงย่อย “I” ที่สองจาก ด้านขวา
วิธีที่ 4: การหาตำแหน่งของ Substring ในสตริงในช่วงของข้อมูล
หากต้องการค้นหาอักขระพิเศษ “@” ใน รหัสอีเมล จากนั้นทำตามวิธีนี้ ฉันได้เพิ่ม คอลัมน์ตำแหน่ง เพื่อจุดประสงค์นี้ที่นี่
ขั้นตอนที่ 01 :
➤ติดตาม Step-01 ของ Method-1
5687
มันจะสร้างฟังก์ชันชื่อ FindSubstring (คุณสามารถใช้ชื่ออื่นก็ได้)
ค่า คือการอ้างอิงเซลล์ที่มีสตริง และประกาศเป็น ช่วง .
ขั้นตอน -02 :
➤เลือกเอาต์พุต เซลล์ E5
➤พิมพ์ฟังก์ชันต่อไปนี้ (สร้างโดย VBA )
=FindSubstring(D5)
D5 คือเซลล์ที่มีสตริง
➤กด ENTER
➤ลาก Fill Handle เครื่องมือ
ผลลัพธ์ :
หลังจากนั้น คุณจะได้รับตำแหน่งของอักขระพิเศษ “ @” ใน รหัสอีเมล
<1
การอ่านที่คล้ายกัน:
- วิธีค้นหาสตริงในเซลล์โดยใช้ VBA ใน Excel (2 วิธี)
- ค้นหาถัดไปโดยใช้ VBA ใน Excel (2 ตัวอย่าง)
- วิธีค้นหาสตริงด้วย VBA ใน Excel (8 ตัวอย่าง)
- VBA ค้นหาแถวสุดท้ายใน Excel (5 วิธี)
วิธีที่ 5: การตรวจสอบสตริงย่อยใน สตริงในช่วงของข้อมูล
สมมติว่าคุณต้องการเขียน ผ่าน หรือ ไม่ผ่าน ชื่อของนักเรียนขึ้นอยู่กับคอลัมน์ ผลลัพธ์ โดยที่ ผ่าน หรือ ไม่ผ่าน ถูกเขียนไว้ในวงเล็บเหลี่ยม หากต้องการค้นหาสตริงย่อยนี้ใน คอลัมน์ผลลัพธ์ และเขียนลงในคอลัมน์ ผ่านหรือไม่ผ่าน ทำตามวิธีนี้
Step-01 :
➤ทำตาม Step-01 ของ Method-1
4987
ที่นี่ ช่วงเซลล์คือ C5:C10 ซึ่งเป็น คอลัมน์ผลลัพธ์
InStr(cell.value, “Pass”) > 0 เป็นเงื่อนไขที่ตัวเลขมากกว่าศูนย์ (เมื่อเซลล์มี “ผ่าน” ) บรรทัดต่อไปนี้จะดำเนินการต่อและให้ผลลัพธ์ในเซลล์ที่อยู่ติดกันเป็น ผ่าน .
หากเงื่อนไขกลายเป็นเท็จ หมายความว่าเซลล์ไม่มี “ผ่าน” ดังนั้นบรรทัดภายใต้ อื่น ๆ จะดำเนินการและให้ค่าเอาต์พุตใน เซลล์ที่อยู่ติดกันเป็น ล้มเหลว .
ลูปนี้จะดำเนินต่อไปสำหรับแต่ละเซลล์
➤กด F5
ผลลัพธ์ :
จากนั้น คุณจะได้รับผลลัพธ์ต่อไปนี้ใน ผ่านหรือไม่ผ่าน คอลัมน์
วิธีที่ 6: การตรวจสอบสตริงย่อยในสตริงและแยกข้อมูล
ฉันจะแสดงวิธีค้นหานักเรียนที่ชื่อ ไมเคิล ในคอลัมน์ ชื่อนักเรียน และดึงข้อมูลที่เกี่ยวข้องโดยใช้ VBA ในวิธีนี้
ขั้นตอน-01 :
➤ติดตาม ขั้นตอน-01 ของ วิธีการ-1
2935
ที่นี่ ฉันใช้ B100 เป็น Active Sheet Range แต่คุณสามารถใช้ช่วงใดก็ได้ตามการใช้งานของคุณ
InStr(1, Range("B" & i), "Michael") > 0
เป็นเงื่อนไขในการตรวจสอบว่าเซลล์ใน คอลัมน์ B มี Michael
Range("E" & icount & ":G" & icount)
เป็นช่วงที่คุณต้องการข้อมูลเอาต์พุต และ Range("B" & i & ":D" & i).value
จะให้ค่าต่างๆ จากคอลัมน์ B ถึง D .
➤กด F5
ผลลัพธ์ :
หลังจากนั้น คุณจะได้รับข้อมูลที่แยกออกมาต่อไปนี้สำหรับนักเรียนที่มีชื่อ ไมเคิล
<38
วิธีที่ 7: การค้นหาสตริงย่อยสำหรับคำ
หากคุณต้องการค้นหาสตริงย่อยเป็นคำ ให้ทำตาม วิธีนี้ต่ำ
ขั้นตอนที่ 01 :
➤ติดตาม ขั้นตอนที่ 01 ของ วิธีที่ 1
9927
มันจะตรวจสอบว่าสตริงมี เป็น หรือไม่ จากนั้นจะได้รับตำแหน่ง
➤กด F5
ผลลัพธ์ :
หลังจากนั้น คุณจะได้รับกล่องข้อความต่อไปนี้ซึ่งแสดง คำที่พบในตำแหน่ง:6 (ตำแหน่งของ คือ ).
คุณสามารถทดสอบได้ออกรหัสนี้สำหรับคำที่ไม่ได้อยู่ในสตริง
➤พิมพ์รหัสต่อไปนี้
8175
➤กด F5
ผลลัพธ์ :
หลังจากนั้น คุณจะได้รับกล่องข้อความต่อไปนี้ซึ่งแสดง คำที่ไม่พบ
วิธีที่ 8: การใช้ฟังก์ชัน Instr และ LEFT
ที่นี่ ฉันจะอธิบายวิธีการหาตำแหน่งของสตริงย่อยในสตริง และแยกข้อความก่อนสตริงย่อยนี้โดยใช้ VBA และ ฟังก์ชันซ้าย .
ขั้นตอนที่ 01 :
➤ติดตาม ขั้นตอนที่ 01 ของ Method-1
9566
j = InStr(txt, "is")
เป็นตำแหน่งของสตริงย่อย คือ และ Left(txt, j - 1)
จะแยกสตริงย่อยก่อน คือ .
➤กด F5
ผลลัพธ์ :
หลังจากนั้น คุณจะได้กล่องข้อความต่อไปนี้ซึ่งแสดง ที่นี่ (สตริงย่อยก่อน คือ )
วิธีที่ 9: ตัวหนา a สตริงย่อยในสตริง
คุณสามารถทำให้เกรดเป็นตัวหนาก่อนวงเล็บใน คอลัมน์ผลลัพธ์ โดยทำตามวิธีนี้ d.
Step-01 :
➤ทำตาม Step-01 ของ Method- 1
7468
txt = InStr(1, Cell, "(")
จะคืนตำแหน่งของวงเล็บแรก และ Cell.Characters(1, txt - 1).Font.Bold
จะสร้างสตริงย่อยก่อนวงเล็บแรก ตัวหนา
ขั้นตอน-02 :
➤เลือก คอลัมน์ผลลัพธ์
➤ไป เป็น นักพัฒนา แท็บ>> มาโคร ตัวเลือก
จากนั้น มาโคร วิซาร์ดจะปรากฏขึ้น
➤เลือก Boldingsubstring (ชื่อโค้ด VBA) จากนั้นเลือก เรียกใช้
ผลลัพธ์ :
หลังจากนั้น เกรดใน ผลลัพธ์ คอลัมน์ จะเป็นตัวหนา
<49
ส่วนการปฏิบัติ
สำหรับการฝึกฝนด้วยตัวเอง เราได้จัดทำส่วน แบบฝึกหัด ดังด้านล่างในชีตที่ชื่อว่า แบบฝึกหัด โปรดทำด้วยตัวเอง
สรุป
ในบทความนี้ ฉันพยายามครอบคลุมวิธีที่ง่ายที่สุดในการค้นหาสตริงย่อยโดยใช้ VBA ใน Excel ได้อย่างมีประสิทธิภาพ หวังว่าคุณจะพบว่ามีประโยชน์ หากคุณมีข้อเสนอแนะหรือคำถามใดๆ โปรดแบ่งปันกับเรา