วิธีค้นหาสตริงย่อยโดยใช้ VBA (9 วิธี)

  • แบ่งปันสิ่งนี้
Hugh West

หากคุณกำลังมองหาวิธีที่ง่ายที่สุดในการค้นหาสตริงย่อยโดยใช้ 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 ได้อย่างมีประสิทธิภาพ หวังว่าคุณจะพบว่ามีประโยชน์ หากคุณมีข้อเสนอแนะหรือคำถามใดๆ โปรดแบ่งปันกับเรา

Hugh West เป็นผู้ฝึกอบรมและนักวิเคราะห์ Excel ที่มีประสบการณ์สูงและมีประสบการณ์มากกว่า 10 ปีในอุตสาหกรรมนี้ เขาสำเร็จการศึกษาระดับปริญญาตรีสาขาการบัญชีและการเงิน และปริญญาโทสาขาบริหารธุรกิจ Hugh มีความหลงใหลในการสอนและได้พัฒนาแนวทางการสอนที่เป็นเอกลักษณ์ซึ่งง่ายต่อการติดตามและเข้าใจ ความรู้ความเชี่ยวชาญของเขาเกี่ยวกับ Excel ช่วยให้นักเรียนและผู้เชี่ยวชาญหลายพันคนทั่วโลกพัฒนาทักษะและความเป็นเลิศในอาชีพการงาน ฮิวจ์แบ่งปันความรู้ของเขากับคนทั้งโลกผ่านบล็อก โดยเสนอบทช่วยสอน Excel ฟรีและการฝึกอบรมออนไลน์เพื่อช่วยให้บุคคลและธุรกิจบรรลุศักยภาพสูงสุดของตนเอง