วิธีใช้ฟังก์ชัน InStr ใน VBA (3 ตัวอย่างง่ายๆ)

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

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

ดาวน์โหลดสมุดงานแบบฝึกหัด

InStr Function.xlsm

ความรู้เบื้องต้นเกี่ยวกับ VBA InStr Function

  • สรุป

ค้นหาสตริงเฉพาะภายในสตริงที่กำหนด โดยเริ่มจากตำแหน่งที่กำหนด หากพบการจับคู่ ให้ส่งคืนตำแหน่งในสตริงที่กำหนดจากตำแหน่งที่การจับคู่เริ่มต้น

  • ไวยากรณ์

InStr([start ],string1,string2,[เปรียบเทียบ])

  • อาร์กิวเมนต์
<14
อาร์กิวเมนต์ ข้อกำหนด คำอธิบาย

[start] ไม่บังคับ ตำแหน่งที่จะเริ่มค้นหา ค่าเริ่มต้นคือ 1
string1 จำเป็น สตริงที่ค้นหาสตริงที่กำหนด
string2 จำเป็น สตริงที่ค้นหาภายในสตริงที่กำหนด
[เปรียบเทียบ] ไม่บังคับ ค่าตัวเลขระหว่าง {-1,0,1,2} ที่ระบุประเภทของการเปรียบเทียบ เดอะค่าเริ่มต้นคือ -1 (vbUseCompareOption) หากไม่ได้ระบุคำสั่งเปรียบเทียบตัวเลือก ให้ดำเนินการเปรียบเทียบแบบไบนารี

หมายเหตุ:

  • แม้ว่า [start] อาร์กิวเมนต์และอาร์กิวเมนต์ [compare] เป็นทางเลือก คุณต้องใช้อาร์กิวเมนต์ [start] หากคุณระบุอาร์กิวเมนต์ [compare] มิฉะนั้นจะทำให้เกิดข้อผิดพลาด
  • หากอาร์กิวเมนต์ [start] ตัวใดตัวหนึ่งหรือทั้งสองตัวและอาร์กิวเมนต์ [compare] ตัวใดตัวหนึ่งเป็น Null คุณจะพบข้อผิดพลาด
  • ค่าที่ระบุสี่ค่าในอาร์กิวเมนต์ [compare] ทำการเปรียบเทียบสี่ประเภทที่แตกต่างกัน มีการระบุไว้ด้านล่าง:
VALUE คงที่ DESCRIPTION

-1 vbUseCompareOption ดำเนินการเปรียบเทียบที่ระบุใน คำสั่งเปรียบเทียบตัวเลือก
0 vbBinaryCompare ทำการเปรียบเทียบแบบไบนารี
1 vbTextCompare ทำการเปรียบเทียบข้อความ
2 vbDatabaseCompare ทำการเปรียบเทียบตามฐานข้อมูลของคุณ คำสั่ง
  • ตัวเลือกเปรียบเทียบ เป็นคำสั่งที่ให้ไว้ก่อนที่จะเริ่มโค้ด VBA หลัก โดยจะระบุว่าโค้ดจะค้นหาการเปรียบเทียบแบบไบนารีหรือการเปรียบเทียบข้อความเมื่อจำเป็น

ตัวเลือกเปรียบเทียบข้อความ

    • ในแง่ง่ายๆ การเปรียบเทียบแบบไบนารี หมายถึงการพิจารณาตัวพิมพ์เล็กและใหญ่การเปรียบเทียบ
    • ในแง่ง่ายๆ การเปรียบเทียบข้อความ หมายถึงการเปรียบเทียบโดยไม่คำนึงถึงตัวพิมพ์เล็กและใหญ่
  • ค่าที่ส่งคืน
    • ส่งกลับตำแหน่งใน string1 จากที่เริ่มต้น string2
    • ในกรณีที่ไม่พบ string2 ภายใน string1 เริ่มต้นจากตำแหน่ง start ให้คืนค่า 0
    • หาก string1 มีความยาวเป็นศูนย์ ให้คืนค่า 0
    • ถ้า string2 มีความยาวเป็นศูนย์ ให้คืนค่าอาร์กิวเมนต์ start .
    • และสุดท้าย ถ้าค่าใดใน string1 หรือ string2 เป็น Null ส่งคืนข้อผิดพลาด

3 ตัวอย่างง่ายๆ ในการใช้ฟังก์ชัน VBA InStr

ใน ในส่วนนี้ เราจะดูสามตัวอย่างง่ายๆ ของการนำฟังก์ชัน VBA InStr ไปใช้ใน Excel มาดูตัวอย่างแรกของฟังก์ชัน InStr ในโค้ด VBA

1. การตัดสินใจว่าที่อยู่เป็นที่อยู่อีเมลหรือไม่ โดยใช้ฟังก์ชัน VBA InStr

ที่นี่ เราได้นำชุดข้อมูลที่ประกอบด้วยที่อยู่ติดต่อของลูกค้าบางส่วน เป้าหมายของเราในที่นี้คือการระบุว่าที่อยู่นั้นเป็นที่อยู่อีเมลหรือไม่

ตอนนี้เราจะพัฒนาโค้ด VBA โดยใช้ฟังก์ชัน InStr เพื่อระบุ ไม่ว่าจะเป็นที่อยู่อีเมลหรือไม่ โดยทำตามขั้นตอนด้านล่าง

ขั้นตอน:

  • ในตอนเริ่มต้น ให้ไปที่แท็บ นักพัฒนาซอฟต์แวร์ และเลือก Visual Basic ( หรือกด Alt+F11) เพื่อเปิด VBA หน้าต่าง

  • จากนั้น ในหน้าต่าง VBA ให้ไปที่ แทรก > โมดูล .

  • หลังจากนั้น บนโมดูล ให้วางโค้ดต่อไปนี้:
1281

<27

  • ยิ่งไปกว่านั้น เราได้สร้างฟังก์ชันที่ชื่อว่า DECISION ตัดสินใจว่าที่อยู่เป็นที่อยู่อีเมลหรือไม่ ลองใช้ฟังก์ชันกับชุดข้อมูลที่เรามี
  • ในเซลล์ C5 ให้จดสูตรต่อไปนี้ แล้วป้อนเซลล์ที่เหลือโดยอัตโนมัติโดยใช้ Fill Handle
=DECISION(B5)

  • อย่างที่เราเห็น เราได้ระบุที่อยู่แต่ละรายการไม่ว่าจะเป็นที่อยู่อีเมล หรือไม่

🎓 How Do the Code Work?

  • Function DECISION(string1 As String)

ก่อนอื่น สร้างฟังก์ชันชื่อ DECISION โดยมี อาร์กิวเมนต์สตริงชื่อ string1 .

  • Dim Position As Integer

ประกาศตัวแปรจำนวนเต็มชื่อ Position .

  • ตำแหน่ง = InStr(1, string1, “@”, 0)

สิ่งนี้กำหนดค่าของ ตำแหน่ง ตัวแปรเป็นเอาต์พุตของฟังก์ชัน InStr ที่มีอาร์กิวเมนต์ 1, string1, “@” และ 0 กล่าวโดยย่อ สิ่งนี้กำหนดตำแหน่งในที่อยู่ที่มี “@” .

  • หากตำแหน่ง = 0 ดังนั้น DECISION = “ไม่ใช่อีเมล”

กำหนดผลลัพธ์ของฟังก์ชัน DECISION เป็น “ไม่ใช่อีเมล” ถ้า ตำแหน่ง ตัวแปรคือ 0 หมายความว่าไม่มี “@” ในที่อยู่

(เรียกคืนหากไม่พบสตริงใดๆ ภายในสตริงที่กำหนด InStr ฟังก์ชันส่งกลับ 0 ).

  • Else DECISION = “อีเมล”

สิ่งนี้กำหนด ผลลัพธ์ของฟังก์ชัน DECISION เป็น “อีเมล” หากมี “@” ในที่อยู่ ดังนั้นที่อยู่ที่มี “@” จะถูกจัดประเภทเป็น อีเมล และที่เหลือจะถูกจัดประเภทเป็น “ไม่ใช่อีเมล”

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

  • วิธีใช้ฟังก์ชัน VBA UCASE ใน Excel (4 ตัวอย่าง)
  • ใช้ฟังก์ชัน MsgBox ใน Excel VBA (คำแนะนำฉบับสมบูรณ์)
  • วิธีใช้ฟังก์ชัน VBA SPLIT ใน Excel (5 ตัวอย่าง)
  • ใช้ฟังก์ชัน LCase ใน VBA ใน Excel (ด้วย 4 ตัวอย่าง)
  • วิธีใช้ฟังก์ชัน Fix ใน Excel VBA (4 ตัวอย่าง)

2. การใช้ฟังก์ชัน InStr ของ VBA สำหรับ การแยกส่วนขยายของที่อยู่อีเมลบางรายการออก

ที่นี่ เรามีรายการที่อยู่อีเมลของลูกค้าบางราย คราวนี้เราจะแยกส่วนขยายของที่อยู่อีเมล เช่น ว่ามี gmail.com หรือ yahoo.com .

โดยทำตามขั้นตอนด้านล่าง

ขั้นตอน:

  • ในการเริ่มต้น เช่นเดียวกับวิธีก่อนหน้านี้ ให้เปิด VBA<2 ใหม่> โมดูล และวางโค้ดต่อไปนี้ในหน้าต่าง
3643

  • นอกจากนี้ เราได้สร้างฟังก์ชันที่เรียกว่า ส่วนขยาย . โดยจะแยกส่วนขยายของที่อยู่อีเมลใดๆ
  • นอกจากนี้ ลองใช้ฟังก์ชันนี้กับชุดข้อมูลที่เรามี ขั้นแรก ป้อนสูตรนี้ในเซลล์ C5 จากนั้นดับเบิลคลิกที่ Fill Handle
=EXTENSION(B5)

  • สุดท้าย เราจะเห็นว่าเราได้ขยายส่วนขยายของอีเมลทั้งหมดเรียบร้อยแล้ว

🎓 รหัสทำงานอย่างไร

  • ส่วนขยายของฟังก์ชัน (อีเมลเป็นสตริง)

ซึ่งจะสร้างฟังก์ชันใหม่ที่เรียกว่า ส่วนขยาย โดยมี อาร์กิวเมนต์สตริงชื่อ อีเมล .

  • ตำแหน่งหรี่เป็นจำนวนเต็ม

ส่วนนี้ประกาศตัวแปรจำนวนเต็มชื่อ ตำแหน่ง .

  • Position = InStr(1, Email, “@”, 0)

สิ่งนี้กำหนดค่าของ <1 ตัวแปร>Position เป็นเอาต์พุตของฟังก์ชัน InStr ที่มีอาร์กิวเมนต์ 1, อีเมล, “@” และ 0 กล่าวโดยสรุปคือ กำหนดตำแหน่งใน อีเมล โดยมี “@” .

  • EXTENSION = Right(Email, (Len (อีเมล) – ตำแหน่ง))

ส่วนนี้กำหนดเอาต์พุตของฟังก์ชัน EXTENSION เป็นอักขระหลังสัญลักษณ์ “@” นี่คือส่วนขยายที่จำเป็นของ อีเมล

3. การแยกชื่อหรือนามสกุลออกจากชื่อ โดยใช้ฟังก์ชัน InStr ของ VBA

สุดท้าย เราจะทำงานที่แตกต่างกันโดยไม่ซ้ำกัน ในครั้งนี้เรามีรายชื่อพนักงานบางส่วนของบริษัท. และเราจะพยายามสร้างฟังก์ชันเพื่อแยกชื่อหรือนามสกุลของพนักงาน

โดยทำตามขั้นตอนด้านล่าง

ขั้นตอน:

  • ประการแรก เช่นเดียวกับ วิธีที่ 1 ให้วางโค้ดด้านล่างในโมดูลใหม่ในหน้าต่าง VBA
8440

  • ที่นี่ เราได้สร้างฟังก์ชันชื่อ SHORTNAME ซึ่งจะแยกชื่อหรือนามสกุลออกจากชื่อ ลองใช้สูตรนี้กับชุดข้อมูลของเรา
  • ในตอนแรก หากต้องการแยกชื่อ ให้จดสูตรด้านล่างลงในเซลล์ C5 .
<7 =SHORTNAME(B5,-1)

  • สุดท้าย เพื่อแยกนามสกุล เราจดสูตรต่อไปนี้ใน D5 :
=SHORTNAME(B5,1)

  • หลังจากนั้น หากเราเติมเซลล์ที่เหลือโดยอัตโนมัติด้วย Fill Handler เราจะเห็นผลลัพธ์ที่เราต้องการ

🎓 How Do the Code Work?

  • ฟังก์ชัน SHORTNAME (ชื่อเป็นสตริง, First_or_Last เป็นจำนวนเต็ม)

สร้างฟังก์ชันใหม่ชื่อ SHORTNAME โดยมีอาร์กิวเมนต์สตริงหนึ่งรายการชื่อ ชื่อ และอาร์กิวเมนต์จำนวนเต็มหนึ่งรายการชื่อ First_or_Last .

  • Dim Break As Integer

ส่วนนี้ประกาศตัวแปรจำนวนเต็มใหม่ชื่อ Break .

  • Break = InStr(1, Name, ” “, 0)

กำหนดค่าของตัวแปร Break เป็นเอาต์พุตของฟังก์ชัน InStr พร้อมด้วยอาร์กิวเมนต์ 1 ชื่อ “ ” และ 0 ในระยะสั้น สิ่งนี้กำหนดตำแหน่งใน ชื่อ โดยมี ช่องว่าง (“ ”)

  • ถ้า First_or_Last = -1 แล้วก็ SHORTNAME = ซ้าย(ชื่อ, ตัวแบ่ง – 1)

บรรทัดนี้กำหนดผลลัพธ์ของฟังก์ชัน SHORTNAME เป็นอักขระก่อนหน้า ช่องว่าง ถ้าอาร์กิวเมนต์ First_or_Last คือ -1 นี่คือชื่อแรก

  • SHORTNAME = ขวา(ชื่อ, Len(ชื่อ) – ตัวแบ่ง)

ส่วนนี้กำหนดเอาต์พุตของ ฟังก์ชัน SHORTNAME เป็นอักขระหลัง ช่องว่าง ถ้าอาร์กิวเมนต์ First_or_Last คือ 1 นี่คือนามสกุล

บทสรุป

ด้วยวิธีนี้ คุณสามารถเขียนโค้ด VBA ด้วยฟังก์ชัน InStr ซึ่งจะค้นหาตำแหน่งของสตริงที่ระบุภายในสตริงที่กำหนด สตริง จากนั้นคุณสามารถสร้างฟังก์ชันของคุณเองเพื่อการใช้งานที่หลากหลาย นอกจากนี้ หากคุณมีคำถามใดๆ โปรดอย่าลังเลที่จะถามเรา

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