วิธีค้นหาสตริงด้วย VBA ใน Excel (8 ตัวอย่าง)

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

การนำ VBA ไปใช้เป็นวิธีที่มีประสิทธิภาพสูงสุด รวดเร็วที่สุด และปลอดภัยที่สุดในการเรียกใช้การดำเนินการใดๆ ใน Excel ในบทความนี้ เราจะแสดงวิธีค้นหาสตริงบางสตริงในสตริงที่กำหนดโดยใช้ VBA ใน Excel

ดาวน์โหลดเทมเพลตแนวปฏิบัติ

คุณ สามารถดาวน์โหลดเทมเพลต Excel แบบฝึกหัดได้ฟรีจากที่นี่

VBA to Find in String.xlsm

InStr Function

Microsoft Excel มีฟังก์ชันในตัวที่เรียกว่า ฟังก์ชัน InStr เพื่อค้นหาตำแหน่งของสตริงที่ระบุในสตริงที่กำหนด

ไวยากรณ์ทั่วไป:

InStr([start], string1, string2, [compare])

ที่นี่

อาร์กิวเมนต์ จำเป็น/ ไม่บังคับ คำจำกัดความ
เริ่มต้น ไม่บังคับ ตำแหน่งเริ่มต้นของการค้นหา
  • ตามค่าเริ่มต้น ฟังก์ชัน InStr จะคำนวณตำแหน่งอักขระโดยนับจาก 1 ไม่ใช่จากตำแหน่งเริ่มต้น ดังนั้น คุณสามารถเว้นว่างไว้หากต้องการ
string1 จำเป็น สตริงที่ต้องการค้นหา สตริงหลัก
string2 จำเป็น สตริงที่ต้องการค้นหาในสตริงหลัก .
เปรียบเทียบ ตัวเลือก ฟังก์ชัน InStr คำนึงถึงขนาดตัวพิมพ์ตามค่าเริ่มต้น แต่ถ้าคุณต้องการเรียกใช้ InStr ที่ไม่คำนึงถึงขนาดตัวพิมพ์ คุณสามารถส่งอาร์กิวเมนต์ที่นี่เพื่อทำการเปรียบเทียบได้ อาร์กิวเมนต์นี้สามารถเป็นดังต่อไปนี้ค่า
  • vbBinaryCompare -> ทำการเปรียบเทียบไบนารี ส่งกลับค่า 0
  • vbTextCompare -> ทำการเปรียบเทียบข้อความ ส่งกลับค่า 1
  • vbDatabaseCompare -> ทำการเปรียบเทียบฐานข้อมูล ส่งกลับค่า 2

โดยค่าเริ่มต้น InStr จะใช้ vbBinaryCompare เป็นอาร์กิวเมนต์การเปรียบเทียบ

8 ตัวอย่างง่ายๆ ในการค้นหาตำแหน่งสตริงเฉพาะในสตริงที่กำหนดโดยใช้ VBA

มาดูตัวอย่างง่ายๆ ในการหาตำแหน่งของสตริงในสตริงที่กำหนดโดยใช้ VBA .

1. VBA เพื่อค้นหาตำแหน่งของข้อความในสตริง

ด้านล่างเป็นตัวอย่างของ InStr เพื่อค้นหา ตำแหน่งของข้อความในสตริง

  • กด Alt + F11 บนแป้นพิมพ์หรือไปที่แท็บ ผู้พัฒนา -> Visual Basic เพื่อเปิด Visual Basic Editor .

  • ในหน้าต่างรหัสป๊อปอัป จากแถบเมนู คลิก แทรก -> โมดูล .

  • ตอนนี้ในหน้าต่างโค้ด ให้เขียนโปรแกรม InStr แบบธรรมดาภายใน VBA Sub ขั้นตอน (ดูด้านล่าง).
5369

รหัสของคุณพร้อมที่จะทำงานแล้ว

  • กด F5 บนแป้นพิมพ์หรือจากแถบเมนู เลือก เรียกใช้ -> เรียกใช้ Sub/UserForm คุณยังสามารถคลิกที่ ไอคอนเล่นขนาดเล็ก ในแถบเมนูย่อยเพื่อเรียกใช้มาโคร

คุณจะเห็นว่า กล่องข้อความป๊อปอัพจะให้ หมายเลขแก่คุณประกาศตำแหน่ง ของข้อความที่คุณต้องการตรวจสอบ

คำอธิบาย:

สตริงหลักของเรา “ ความสุข เป็นตัวเลือก ” เป็นประโยคที่มีตัวอักษร 21 ตัว (มีช่องว่าง) และเราต้องการหาตำแหน่งของข้อความ “ ตัวเลือก ” ในสตริงนั้น ข้อความ “ ตัวเลือก ” เริ่มต้นจากตำแหน่งที่ 16 ของสตริงหลัก ดังนั้นเราจึงได้หมายเลข 16 เป็นผลลัพธ์ในกล่องข้อความ

2. VBA เพื่อค้นหาข้อความจากตำแหน่งเฉพาะในสตริง

ตอนนี้ มาดูกันว่าจะเกิดอะไรขึ้นหากเราต้องการรับตำแหน่งจากตัวเลขที่กำหนด

  • วิธีเดียวกับ ก่อนหน้านี้ ให้เปิด Visual Basic Editor จากแท็บ นักพัฒนาซอฟต์แวร์ และ แทรก a โมดูล ในหน้าต่างรหัส
  • ใน หน้าต่างรหัส เขียนโปรแกรม InStr อย่างง่ายที่แสดงด้านบน และส่งค่าในอาร์กิวเมนต์ start ตามตำแหน่งที่คุณต้องการนับข้อความของคุณ
5953

  • ถัดไป เรียกใช้ รหัส

คุณจะเห็นว่ากล่องข้อความป๊อปอัปจะ ให้ หมายเลขประกาศตำแหน่ง ของข้อความ เริ่มต้นจากตำแหน่งใดตำแหน่งหนึ่ง ที่คุณต้องการตรวจสอบ

คำอธิบาย:

ดังที่เราทราบแล้ว (จากการสนทนาระยะที่ 1) ว่าข้อความ “ ตัวเลือก ” เริ่มต้นจากตำแหน่ง 16 ดังนั้นเราจึงแทรก “ choice ” ในสตริงหลัก และตั้งค่า 17 เป็นของเราพารามิเตอร์ตัวที่ 1 เพื่อข้าม “ ตัวเลือก ตัวแรก” ดังนั้นเราจึง เรียกใช้ มาโครด้านบน และแสดงหมายเลขตำแหน่ง 27 ซึ่งเป็นหมายเลขตำแหน่งของ วินาที ตัวเลือก ” ในสตริงที่กำหนด

3. VBA เพื่อค้นหาข้อความด้วยฟังก์ชัน InStr ที่ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ในสตริง

จากการแนะนำของฟังก์ชัน InStr คุณรู้อยู่แล้วว่าโดยค่าเริ่มต้น ฟังก์ชัน InStr เป็นกรณีที่สำคัญ ลองดูตัวอย่าง

ดูโค้ด VBA ต่อไปนี้ ซึ่งเราต้องการหาตำแหน่งของคำว่า “ Choice ” ด้วย ตัวพิมพ์ใหญ่ “C” ในสตริง “ Happiness is a choice ” โดยที่ตัวเลือกจะเขียนด้วย ตัวเล็ก “c” .

  • เรียกใช้ รหัสและค้นหา 0 เป็นเอาต์พุตของเรา

นั่นเป็นเพราะว่าฟังก์ชัน InStr ถือว่า ตัวพิมพ์ใหญ่ “C” และ ตัว “c” ตัวเล็ก แตกต่างกัน มันจึงค้นหาคำว่า “ Choice ” ในสตริงและไม่พบคำที่ตรงกัน จึงส่งคืน 0 .

  • หากต้องการสร้างฟังก์ชัน InStr ไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่ ให้ตั้งค่าอาร์กิวเมนต์การเปรียบเทียบเป็น vbTextCompare (ดูด้านล่าง)
3647

  • เรียกใช้ โค้ด

คุณจะได้ ตำแหน่งของข้อความ จากสตริง ไม่ว่าข้อความจะถูกเขียนด้วย ตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็ก .

4. VBA เพื่อค้นหาข้อความจากด้านขวาของสตริง

จนถึงตอนนี้ ฟังก์ชัน InStr ให้ตำแหน่งทางด้านซ้ายของสตริงเท่านั้น แต่จะทำอย่างไรถ้าคุณต้องการค้นหาตำแหน่งข้อความจากด้านขวาของสตริง

ฟังก์ชัน InStrRev ค้นหาจากด้านขวา ฟังก์ชัน InStrRev ทำงานคล้ายกับฟังก์ชัน InStr และจะหาตำแหน่งของข้อความจาก ด้านขวา ของสตริง

ดูตัวอย่างต่อไปนี้เพื่อทำความเข้าใจความแตกต่าง

  • หากเรารันโค้ดต่อไปนี้ด้วยฟังก์ชัน InStr ดังนั้น

มันให้ตำแหน่ง ( 16 ) ของข้อความแรก “ ตัวเลือก

  • แต่ถ้าเรารันโค้ดเดียวกันกับ InStrRev ฟังก์ชัน ดังนั้น

มันจะให้ตำแหน่งแก่เรา ( 27 ) ของข้อความสุดท้าย “ ตัวเลือก ”.

การอ่านที่คล้ายกัน:

  • FindNext โดยใช้ VBA ใน Excel (2 ตัวอย่าง)
  • วิธีค้นหาและแทนที่โดยใช้ VBA (11 วิธี)
  • ค้นหาข้อมูลที่ตรงกันโดยใช้ VBA ใน Excel (5 วิธี)

5. VBA เพื่อค้นหาตำแหน่งของอักขระในสตริง

คุณยังสามารถค้นหาตำแหน่งของอักขระบางตัวในสตริงได้ด้วยวิธีเดียวกับที่คุณพบข้อความ

  • คัดลอก โค้ดต่อไปนี้ลงในหน้าต่างโค้ด VBA ของคุณ
4601

  • และ เรียกใช้ มาโคร

ตัวแรก “ e ” ในสตริงที่เรากำหนดคือที่หมายเลข 7 ตำแหน่ง

6. VBA เพื่อค้นหาสตริงย่อยในสตริง

ที่นี่เราจะเรียนรู้วิธีค้นหาว่าสตริงมี สตริงย่อย หรือไม่

เพื่อให้ได้สิ่งนั้น เรามี เพื่อเรียกใช้ คำชี้แจง IF ในโค้ดของเรา

  • เช่นเดียวกับก่อนหน้านี้ เปิด Visual Basic Editor จากแท็บ นักพัฒนาซอฟต์แวร์ และ แทรก a โมดูล ในหน้าต่างโค้ด
  • ในหน้าต่างโค้ด ให้คัดลอกโค้ดต่อไปนี้แล้ววาง
7677

ของคุณ โค้ดพร้อมที่จะทำงานแล้ว

  • เรียกใช้ มาโคร

หาก สตริงของคุณมีสตริงย่อย คุณจะได้รับ รายการที่ตรงกัน มิฉะนั้น จะส่งคืนไม่พบรายการที่ตรงกัน ในตัวอย่างของเรา เราต้องการทราบว่าสตริงหลักของเรา “ ความสุขคือทางเลือก ” มีคำว่า “ ทางเลือก ” หรือ ไม่. เราจะได้ ผลการแข่งขันที่ตรงกัน

7. VBA เพื่อค้นหาสตริงในช่วงเซลล์

คุณสามารถค้นหาข้อความที่ต้องการในช่วงเซลล์ของสตริงและส่งกลับสตริงที่ต้องการ

ดูตัวอย่างต่อไปนี้ที่เราจะ ค้นหา “ Dr. ” และเมื่อมีการจับคู่ก็จะส่งคืน “ Dr.

  • ด้านล่างคือโค้ดเพื่อรับผลลัพธ์ที่กล่าวถึงข้างต้น
6507

  • เรียกใช้ รหัสและผลลัพธ์แสดงด้านล่าง

  • คุณสามารถแก้ไขมาโครได้ตามความต้องการของคุณ เช่น ถ้าคุณต้องการให้หา “ Professor ” ในเซลล์ใดก็ได้ของสตริง และได้รับ “ Professor ” เป็นการส่งคืน จากนั้นให้ส่ง “ ศ. ” เป็นค่าแทน “ ดร. ” ในบรรทัดที่ 4 ของมาโคร และ “ Professor ” แทน “ Doctor ” ในบรรทัดที่ 5 ของมาโคร และกำหนด จำนวนช่วงเซลล์ตามลำดับ

8. VBA เพื่อค้นหาสตริงในเซลล์

คุณยังสามารถ ค้นหาข้อความที่ต้องการในเซลล์เดียวของสตริง และส่งคืนสตริงที่ต้องการ

  • คัดลอกโค้ดต่อไปนี้และวางลงในหน้าต่างโค้ด
5905

ระบบจะค้นหา “ Dr. ” ใน เซลล์ B5 และหากพบข้อมูลที่ตรงกัน ก็จะส่งกลับ “ หมอ ” ใน เซลล์ C5 .

  • คุณสามารถแก้ไขมาโครได้ตามความต้องการของคุณ ตัวอย่างเช่น หากคุณต้องการค้นหา “ Professor ” ในเซลล์ใดๆ ของสตริง และได้รับ “ Professor ” เป็นการส่งคืน จากนั้นเพียงส่ง “ Prof. ” เป็นค่าแทน “ Dr ” ในบรรทัดที่ 2 ของมาโคร และ “ Professor ” แทน “ Doctor ” ในบรรทัดที่ 3 ของมาโคร และกำหนด หมายเลขอ้างอิงเซลล์ตามนั้น

บทสรุป

บทความนี้แสดงวิธีค้นหาข้อความในสตริงใน Excel โดยใช้ แมโคร VBA ฉันหวังว่าบทความนี้จะเป็นประโยชน์ต่อคุณอย่างมาก อย่าลังเลที่จะถามคำถามใด ๆ เกี่ยวกับหัวข้อ.

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