สารบัญ
การนำ VBA ไปใช้เป็นวิธีที่มีประสิทธิภาพสูงสุด รวดเร็วที่สุด และปลอดภัยที่สุดในการเรียกใช้การดำเนินการใดๆ ใน Excel ในบทความนี้ เราจะแสดงวิธีค้นหาสตริงบางสตริงในสตริงที่กำหนดโดยใช้ VBA ใน Excel
ดาวน์โหลดเทมเพลตแนวปฏิบัติ
คุณ สามารถดาวน์โหลดเทมเพลต Excel แบบฝึกหัดได้ฟรีจากที่นี่
VBA to Find in String.xlsm
InStr Function
Microsoft Excel มีฟังก์ชันในตัวที่เรียกว่า ฟังก์ชัน InStr เพื่อค้นหาตำแหน่งของสตริงที่ระบุในสตริงที่กำหนด
ไวยากรณ์ทั่วไป:
InStr([start], string1, string2, [compare])
ที่นี่
อาร์กิวเมนต์ | จำเป็น/ ไม่บังคับ | คำจำกัดความ |
---|---|---|
เริ่มต้น | ไม่บังคับ | ตำแหน่งเริ่มต้นของการค้นหา
|
string1 | จำเป็น | สตริงที่ต้องการค้นหา สตริงหลัก |
string2 | จำเป็น | สตริงที่ต้องการค้นหาในสตริงหลัก . |
เปรียบเทียบ | ตัวเลือก | ฟังก์ชัน InStr คำนึงถึงขนาดตัวพิมพ์ตามค่าเริ่มต้น แต่ถ้าคุณต้องการเรียกใช้ InStr ที่ไม่คำนึงถึงขนาดตัวพิมพ์ คุณสามารถส่งอาร์กิวเมนต์ที่นี่เพื่อทำการเปรียบเทียบได้ อาร์กิวเมนต์นี้สามารถเป็นดังต่อไปนี้ค่า
โดยค่าเริ่มต้น 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 ฉันหวังว่าบทความนี้จะเป็นประโยชน์ต่อคุณอย่างมาก อย่าลังเลที่จะถามคำถามใด ๆ เกี่ยวกับหัวข้อ.