วิธีใช้ INDEX MATCH กับ Excel VBA

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

คุณสามารถใช้ฟังก์ชันแผ่นงาน Excel ในตัว เช่น ฟังก์ชัน VLOOKUP , ฟังก์ชัน CHOOSE และ ฟังก์ชัน PMT ในโค้ด VBA และแอปพลิเคชันของคุณ เช่นกัน. ในความเป็นจริง ฟังก์ชันเวิร์กชีต Excel ส่วนใหญ่สามารถเข้าถึงได้และใช้งานใน VBA โค้ด ชอบใช้ INDEX & จับคู่ฟังก์ชันแผ่นงานในโค้ด Excel VBA

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

ดังนั้น เรามาเริ่มกันด้วยตัวอย่างที่แสดงวิธีใช้ INDEX MATCH ด้วย Excel VBA

เราจะใช้ INDEX และ MATCH Functions ใน Excel VBA รหัส เพื่อสร้าง UserForm อย่างง่าย เมื่อใช้แบบฟอร์ม ผู้ใช้จะเลือกชื่อของนักเรียน จากนั้นจึงดึงข้อมูลเพศของนักเรียนและสีตาที่สอดคล้องกัน

ดาวน์โหลดแบบฝึกหัดแบบฝึกหัด

โปรดดาวน์โหลดแบบฝึกหัดแบบฝึกหัดไปที่ ฝึกฝนตัวเอง

INDEX-MATCH.xlsx

9 ขั้นตอนง่ายๆ ในการใช้ INDEX และ MATCH ภายในโค้ด VBA

The ดัชนี และ ตรงกัน ฟังก์ชันต่างๆ มักจะใช้ร่วมกันในสูตร เพื่อทำการค้นหาขั้นสูง การใช้ทั้งสองแบบร่วมกันมีข้อดีบางประการเหนือ VLOOKUP

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

ขั้นตอนที่ 1: ใช้ฟังก์ชัน INDEX และ MATCH ในชุดข้อมูล

  • เราจะเริ่มต้นด้วยสองแผ่นงานในมาโครของเรา สมุดงานที่เปิดใช้งาน แผ่นหนึ่งเป็นแผ่นเปล่าชื่อ ฟอร์มผู้ใช้ อีกแผ่นหนึ่งเป็นแผ่นชื่อ ข้อมูลนักเรียน ซึ่งมีช่วงที่แสดง ชื่อนักเรียน เพศที่ตรงกัน และสีตา เป็น ดังที่แสดงด้านล่าง

มาเตือนตัวเองอย่างรวดเร็วหากเราต้องการใช้ INDEX และ จับคู่ ฟังก์ชันในสูตรเดียวในเวิร์กชีตจริงเพื่อให้เราทราบเพศของชื่อนักเรียนที่เราต้องการค้นหา เราจะใช้สูตรต่อไปนี้:

=INDEX(B2:B31, MATCH("Diana Graham", A2:A31, 0))

  • เมื่อกด CTRL-ENTER เราได้รับค่าของเพศหญิงที่ส่งกลับเป็นเพศที่แสดงด้านล่าง

ขั้นตอนที่ 2: เปลี่ยนชื่อของคอลัมน์ B เป็น StudentNames

  • ตอนนี้เราจะตั้งชื่อช่วง A2: A31 , StudentNames ดังที่แสดงด้านล่าง

<3

  • ซ่อนแผ่นงาน StudentInformation โดยการคลิกขวาและเลือก ซ่อน เป็นความคิดที่ดีที่จะซ่อนแผ่นงานส่วนหลังที่มีข้อมูลเพียงผิวเผิน คุณไม่ต้องการให้ผู้ใช้แก้ไขหรือดู

ขั้นตอนที่ 3: เปิดหน้าต่าง Visual Basic

  • เมื่อเปิดใช้งานแผ่น UserForm แล้ว เราจะไปที่ นักพัฒนา > รหัส > Visual Basic เพื่อเปิด Visual Basic Editor (VBE) .
  • เมื่ออยู่ใน อินเทอร์เฟซ VBE เราไปที่ Insert, UserForm ดังที่แสดงด้านล่าง .

ขั้นตอนที่ 4: เปลี่ยนคุณสมบัติและเพิ่มกล่องข้อความ

  • การใช้หน้าต่าง คุณสมบัติ เราจะเปลี่ยนชื่อแบบฟอร์มของเราเป็น StudentLookup เปลี่ยนคำอธิบายภาพเป็นค้นหาข้อมูลนักเรียน เปลี่ยน BackColor เป็นสีฟ้าอ่อน และตั้งค่าความสูงเป็น 300 px และความกว้างเป็น 350 px หากหน้าต่างคุณสมบัติไม่ปรากฏขึ้น ให้กดปุ่ม F4 บนแป้นพิมพ์เพื่อดูหน้าต่างนี้

  • เรา ตอนนี้จะแทรกป้ายกำกับโดยใช้ กล่องเครื่องมือ (หากคุณไม่เห็นกล่องเครื่องมือ ด้วยเหตุผลบางประการ ให้ไปที่มุมมอง กล่องเครื่องมือ ) เปลี่ยนคำอธิบายภาพเป็น เลือกนักเรียน และเราจะเปลี่ยน BackColor เป็นสีขาวในกรณีนี้ เราจะตั้งค่าฟอนต์เป็น Georgia สไตล์ฟอนต์เป็น ตัวหนา ขนาดฟอนต์เป็น 12 และ กึ่งกลาง จัดข้อความ เอฟเฟกต์พิเศษที่ใช้จะเป็น 1– fmSpecialEffectRaised ดังที่แสดงด้านล่าง

  • ตอนนี้เราจะใส่คอมโบบ็อกซ์ด้านล่าง ฉลาก. ตั้งชื่อคอมโบบ็อกซ์นี้ cmdStudentName และสำหรับ RowSource ให้พิมพ์ StudentNames

  • เพื่อดู ผลของการตั้งค่า RowSource ของคอมโบบ็อกซ์ คลิก ปุ่ม Run Sub/UserForm
  • ตอนนี้ เนื่องจากการตั้งค่า RowSource ไปยังช่วงที่มีชื่อ เมื่อผู้ใช้คลิกลูกศรแบบเลื่อนลงบน UserForm กล่องคำสั่งผสมจะแสดงชื่อนักเรียนจากช่วงที่ตั้งชื่อโดยอัตโนมัติดังที่แสดงด้านล่าง

  • ปิด UserForm โดยคลิกที่ปุ่มปิด กด Alt-F11 เพื่อกลับไปที่ VBE
  • เมื่อย้อนกลับไปใน VBE ให้เพิ่มป้ายกำกับอื่นใน UserForm ( ด้านล่างกล่องคำสั่งผสม) และเปลี่ยน คำอธิบายภาพ เป็น เพศ และเราจะเปลี่ยน สีพื้นหลัง เป็นสีขาวในกรณีนี้ เราจะตั้งค่าแบบอักษรเป็น จอร์เจีย รูปแบบตัวอักษรเป็น ตัวหนา ขนาดตัวอักษรเป็น 12 และ กึ่งกลาง จัดข้อความ . ลักษณะพิเศษที่ใช้จะเป็น 1– fmSpecialEffectRaised ดังที่แสดงด้านล่าง

  • สร้าง กล่องข้อความ ด้านล่าง เพศ ป้ายกำกับ และตั้งชื่อว่า txtGender .
  • เพิ่ม ป้ายกำกับอื่นชื่อ ตา<2 สี และกล่องข้อความชื่อ txtEyeColour ดังที่แสดงด้านล่าง ใช้ คุณสมบัติเดียวกันสำหรับป้ายกำกับ เช่นเดียวกับอีกสองป้ายกำกับที่เพิ่มลงในฟอร์มก่อนหน้านี้ เพื่อให้แน่ใจว่า ฟอร์มผู้ใช้ มีรูปลักษณ์ที่สอดคล้องกัน

  • ตอนนี้ เลือก การควบคุมทั้งหมด เพิ่มไปยัง ฟอร์มผู้ใช้ จนถึงตอนนี้โดยใช้ปุ่มควบคุม

  • กึ่งกลาง ตามแนวนอน ดังที่แสดงด้านล่าง

อ่าน เพิ่มเติม: วิธีใช้สูตร INDEX MATCH ใน Excel (9 ตัวอย่าง)

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

  • Excel INDEX MATCH ถ้าเซลล์มีข้อความ
  • วิธีใช้สูตร INDEX-MATCH ใน Excel เพื่อสร้างผลลัพธ์หลายรายการ
  • ดัชนีจับคู่ผลรวมหลายแถวใน Excel (3 วิธี)
  • เรียนรู้การเขียนโปรแกรม Excel VBA & มาโคร (สอนฟรี – ทีละขั้นตอน)
  • 22 ตัวอย่างมาโครใน Excel VBA

ขั้นตอนที่ 5: เพิ่มปุ่มจากกล่องเครื่องมือ

  • ถัดไป เพิ่ม ปุ่มลงในแบบฟอร์มโดยใช้ กล่องเครื่องมือ เปลี่ยน ชื่อ ของปุ่มเป็น cmdLookUp เปลี่ยน BackColor เป็นสีส้มอ่อน เก็บแบบอักษร Tahoma และ เปลี่ยน รูปแบบเป็น ตัวหนา สุดท้ายเปลี่ยน คำอธิบายภาพ ของปุ่มเป็น มอง ขึ้น นักเรียน รายละเอียด ดังที่แสดงด้านล่าง

ขั้นตอนที่ 6: ใส่โค้ด VBA

  • คลิกขวา ปุ่มที่เพิ่มใหม่ และ เลือก ดู รหัส .

  • ป้อนรหัสต่อไปนี้สำหรับปุ่ม คลิกเหตุการณ์:

9351

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

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

ตัวแปร a ดึงค่าจากตัวเลือกที่ผู้ใช้เลือกใน กล่องคำสั่งผสมแบบเลื่อนลงใน ฟอร์มผู้ใช้ หากไม่มีการเลือก กล่องข้อความอื่นๆ ทั้งหมดจะ ว่างเปล่า .

หากคุณเลือกชื่อนักเรียนจาก คำสั่งผสม กล่อง บน ฟอร์มผู้ใช้ จากนั้นตัวแปร b จะดึงค่าโดยใช้ฟังก์ชัน INDEX แผ่นงาน ร่วมกับฟังก์ชัน MATCH ฟังก์ชัน ใน รหัส VBA ตามที่แสดง

ค้นหาค่าโดยใช้ไวยากรณ์เดียวกับฟังก์ชันแผ่นงาน เมื่อใช้ฟังก์ชันเวิร์กชีตใน VBA VBA IntelliSense ในกรณีนี้จะไม่ค่อย ใช้งานง่าย ดังนั้นจึงคุ้นเคยกับแนะนำให้ใช้ไวยากรณ์ที่รวบรวมจากความรู้ในเวิร์กชีต ตัวแปร c ดึงค่าโดยใช้ INDEX แผ่นงาน ฟังก์ชัน ร่วมกับ MATCH ฟังก์ชัน ในโค้ด VBA เมื่อผู้ใช้เลือกตัวเลือกจากกล่องคำสั่งผสม

ตัวแปร b ได้รับค่าจาก เพศ คอลัมน์ ในเวิร์กชีต ในขณะที่ ตัวแปร c รับค่าจากคอลัมน์ Eye color ในเวิร์กชีต

ช่องข้อความเพศจะเติมด้วย b ค่าและช่องข้อความสีตาบรรจุด้วยค่าของ c

อ่านเพิ่มเติม: เหตุการณ์ Excel VBA (แนวทางฉบับสมบูรณ์)

ขั้นตอนที่ 7: แทรกปุ่มคำสั่ง

  • ไปที่แผ่นงานที่ชื่อว่า ฟอร์มผู้ใช้ ในสมุดงานของคุณ จัดรูปแบบ ดังที่แสดงด้านล่าง และ แทรก ภาพที่จัดทำโดย ExcelWIKI

  • ไปที่ ผู้พัฒนา > การควบคุม > แทรก > ตัวควบคุม ActiveX

  • แทรก ปุ่มตามที่แสดง

<34

  • เมื่อเลือกปุ่ม ไปที่ นักพัฒนาซอฟต์แวร์ > การควบคุม > คุณสมบัติ .

  • เปลี่ยน ชื่อ ของปุ่มเป็น cmdShowForm และ คำบรรยายภาพ ไปยัง ค้นหา ข้อมูลนักเรียน .

ขั้นตอนที่ 8: ดู รหัสการค้นหา

  • คลิกขวา ที่ปุ่ม และ เลือก ดูรหัส ดังรูปด้านล่าง

  • ป้อนรหัสต่อไปนี้:
2513

ขั้นตอนที่ 9: แสดงผลสุดท้าย

  • ย้อนกลับ ไปที่ แผ่นงาน ตรวจสอบให้แน่ใจว่าไม่ได้เลือก การออกแบบ โหมด
  • คลิก ปุ่มเพื่อแสดงแบบฟอร์ม

  • เลือก ชื่อนักเรียนโดยใช้ กล่องคำสั่งผสม รหัสจะส่งกลับเพศและสีตาของนักเรียนโดยอัตโนมัติ

อย่าลืม บันทึก สมุดงานของคุณเป็น สมุดงานที่เปิดใช้งานมาโคร หากคุณยังไม่ได้ทำ และคุณมีแล้ว เราใช้ INDEX & จับคู่ฟังก์ชันแผ่นงานในโค้ด Excel VBA เพื่อสร้างฟอร์มการค้นหา

อ่านเพิ่มเติม: สูตร Excel INDEX-MATCH เพื่อส่งคืนค่าหลายค่าในแนวนอน

สรุป

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

โปรดแสดงความคิดเห็นและบอกหากคุณใช้ฟังก์ชันเวิร์กชีตในโค้ด VBA และแอปพลิเคชันของคุณ

ส่วนทบทวน: ทดสอบความเข้าใจของคุณ

1) ตั้งค่ารายการอย่างง่ายในคอลัมน์ A จากสามรายการ ได้แก่ ส้มเขียวหวาน แครอท และส้ม จากนั้นในเซลล์ถัดจากแต่ละรายการในคอลัมน์ B ให้ระบุว่ารายการในคอลัมน์ A เป็นผลไม้หรือผักหรือไม่ เมื่อคุณตั้งค่าข้อมูลตัวอย่างเรียบร้อยแล้ว ให้ใช้ INDEX & จับคู่ ฟังก์ชันผสมเพื่อระบุว่าแครอทเป็นผลไม้หรือผัก

2) ใช้ชุดข้อมูลจาก ESPN กับหัวหน้าโค้ช NFL และทีมที่เกี่ยวข้องที่พวกเขาเป็นโค้ช สร้างแบบฟอร์มผู้ใช้ที่อนุญาตให้ผู้ใช้ป้อนชื่อโค้ชที่ต้องการในกล่องข้อความ จากนั้นให้ส่งทีมที่เขากำลังสอนในกล่องข้อความอื่นเมื่อผู้ใช้คลิกส่ง ใช้ INDEX & MATCH ชุดฟังก์ชันเวิร์กชีตภายในโค้ด VBA ของคุณ

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