สารบัญ
เมื่อเรามีข้อมูลจำนวนมาก บางครั้งก็ยากที่จะดึงข้อมูลเฉพาะใดๆ ออกจากชุดข้อมูล เมื่อใช้ร่วมกับฟังก์ชัน INDEX และ MATCH ของ Excel จะสามารถดึงข้อมูลประเภทใดก็ได้ แม้จะอยู่ในชุดข้อมูลขนาดใหญ่ การใช้ VBA เป็นวิธีการที่มีประสิทธิภาพที่สุด รวดเร็วที่สุด และปลอดภัยที่สุดในการเรียกใช้การดำเนินการใดๆ ใน Excel ในบทความนี้ เราจะแสดงวิธีต่างๆ 3 วิธีในการดำเนินการ INDEX MATCH ตามเกณฑ์หลายเกณฑ์ ใน Excel ด้วย แมโคร VBA
ดาวน์โหลด สมุดงาน
คุณสามารถดาวน์โหลดสมุดงาน Excel แบบฝึกหัดได้ฟรีจากที่นี่
VBA INDEX MATCH Based on Multiple Criteria.xlsm
3 วิธีการด้วย VBA INDEX MATCH ตามเกณฑ์หลายเกณฑ์ใน Excel
ในส่วนต่อไปนี้ เราจะแสดงวิธีดำเนินการ INDEX MATCH ตามเกณฑ์หลายเกณฑ์สำหรับช่วงหนึ่งๆ , สำหรับการเลือกเฉพาะ และ สำหรับตาราง ใน Excel ด้วย VBA .
ด้านบน เรามีชุดข้อมูลที่บทความนี้จะปฏิบัติตาม เรามี ชื่อนักศึกษา , รหัสนักศึกษา, และ คะแนนสอบ ของนักเรียนแต่ละคนในชุดข้อมูล เราจะแยกผลลัพธ์ที่อยู่ในหนึ่งคอลัมน์ตามเงื่อนไขจากอีกสองคอลัมน์ที่เหลือ
เกณฑ์ – 1: ฝัง VBA ด้วย INDEX MATCH สำหรับการค้นหาหลายมิติ (สอง) มิติใน Excel
พิจารณาภาพต่อไปนี้ เราได้จัดเก็บชื่อนักเรียนเฉพาะ “ Edge” ไว้ใน เซลล์G4 ; และคอลัมน์ที่เราจะค้นหา ผลลัพธ์ ใน เครื่องหมายการสอบ ถูกเก็บไว้ใน เซลล์ G5 เราจะค้นหาในคอลัมน์ เครื่องหมายการสอบ และจัดเก็บ เครื่องหมาย ที่ “ ขอบ” มีอยู่ใน เซลล์ G6 .
<0ขั้นตอนในการค้นหาผลลัพธ์ใน อาร์เรย์สองมิติ ด้วย INDEX และ MATCH ใน Excel ด้วย VBA แสดงไว้ด้านล่าง
ขั้นตอน:
- ในตอนเริ่มต้น ให้กด Alt + F11 บนแป้นพิมพ์หรือไปที่ แท็บ นักพัฒนา -> Visual Basic เพื่อเปิด Visual Basic Editor .
- ถัดไป ในหน้าต่างรหัสป๊อปอัป จาก แถบเมนู คลิก แทรก -> โมดูล .
- จากนั้น คัดลอก โค้ดต่อไปนี้ และ วาง ลงในโค้ด หน้าต่าง
5875
รหัสของคุณพร้อมที่จะทำงานแล้ว
- ตอนนี้ กด F5 บน แป้นพิมพ์หรือจากแถบเมนู เลือก เรียกใช้ -> เรียกใช้ Sub/UserForm คุณยังสามารถคลิกที่ ไอคอนเรียกใช้ขนาดเล็ก ในแถบเมนูย่อยเพื่อเรียกใช้มาโคร
หลังจากดำเนินการโค้ด ดู gif ด้านล่างเพื่อดูผลลัพธ์
ด้วยเหตุนี้ เครื่องหมาย ที่ “ Edge” จึงอยู่ใน ข้อสอบ 67 ถูกเรียกใน เซลล์ G7
คำอธิบายโค้ด VBA
5222
การกำหนดตัวแปรของแผ่นงาน
1201
จัดเก็บชื่อแผ่นงาน ชื่อแผ่นของเราคือ "สองมิติ" คุณควรระบุชื่อตามสเปรดชีตของคุณ
4307
โค้ดชิ้นนี้เลือกช่วง C5:D14 เป็นช่วงการค้นหา จากนั้นค้นหาการจับคู่ที่จัดเก็บไว้ในเซลล์ G4 ในช่วง B5:B14 และค้นหาการจับคู่ที่จัดเก็บไว้ในเซลล์ G5 ในช่วง C4:D4 และส่งผลลัพธ์ไปยังเซลล์ G6 .
อ่านเพิ่มเติม: วิธีใช้ INDEX MATCH ที่มีหลายเกณฑ์สำหรับช่วงวันที่
เกณฑ์ – 2: ใช้มาโครเพื่อค้นหาค่าที่ตรงกันโดย INDEX ด้วยฟังก์ชันที่ผู้ใช้กำหนด (UDF)
คุณสามารถแยกค่าที่ตรงกันจากชุดข้อมูลด้วย ฟังก์ชันที่ผู้ใช้กำหนด (UDF) จากภาพต่อไปนี้ สิ่งที่เราจะทำคือ เราจะส่ง รหัสนักศึกษา และ คะแนนสอบ ของนักเรียนบางคน และฟังก์ชันจะส่ง ชื่อ ของนักเรียนคนนั้น
มาดูวิธีทำให้สำเร็จสำหรับ ชื่อนักเรียน “ฟินน์” ด้วย VBA .
ขั้นตอน:
- ตามที่แสดงก่อนหน้านี้ เปิด Visual Basic Editor จากแท็บ นักพัฒนาซอฟต์แวร์ และ แทรก โมดูล ในหน้าต่างโค้ด
- จากนั้นในหน้าต่างโค้ด คัดลอก โค้ดต่อไปนี้และ วาง โค้ดดังกล่าว
6171
- อย่าเรียกใช้ รหัสนี้ บันทึก รหัสนี้
- ตอนนี้ กลับไปที่แผ่นงาน ที่สนใจ เลือกเซลล์ใดก็ได้ ที่คุณต้องการจัดเก็บผลลัพธ์ ในกรณีของเรา มันคือ เซลล์ F5 .
- ในเซลล์นั้น เขียน UDF คุณเพิ่งสร้างในโค้ด ( MatchByIndex ) และ ส่งรหัสนักศึกษาและเครื่องหมายสอบ ของนักเรียนที่ระบุในวงเล็บของฟังก์ชัน
เป็น เรากำลังพยายามดึงชื่อ “ ฟินน์” จาก ID (105) และ เครื่องหมาย (84) ของเขา ดังนั้นสำหรับกรณีของเรา สูตรจะกลายเป็น <3 =MatchByIndex(105,84)
- จากนั้น กด Enter .
ดูภาพต่อไปนี้
ใน เซลล์ F5 เราดึงชื่อ “ ฟินน์” สำเร็จแล้ว โดยเพียงแค่ส่ง ID และ เครื่องหมาย ของเขาภายในฟังก์ชันที่เราสร้างขึ้นในโค้ด VBA
คำอธิบายโค้ด VBA
6449
การสร้างฟังก์ชันใหม่และส่งผ่านตัวแปรที่อยู่ภายใน คุณสามารถกำหนดชื่อให้กับฟังก์ชัน
6014
แถวของเราเริ่มต้นจากแถวหมายเลข 4 คุณต้องระบุหมายเลขแถวที่ชุดข้อมูลของคุณเริ่มต้น
8204
การกำหนดตัวแปร
2186
ขั้นแรก กำหนดเวิร์กชีตที่จะทำงานด้วย ชื่อแผ่นงานของเราคือ "UDF" คุณควรระบุชื่อตามสเปรดชีตของคุณ จากนั้นเริ่มค้นหาในช่วง C:D จากแถวแรกที่เรากำหนดไว้จนถึงแถวสุดท้าย
8130
เริ่มวนซ้ำจากแถวแรกไปยังแถวสุดท้าย ถ้าค่าแรกที่เราจะส่งในฟังก์ชันตกในคอลัมน์ C และถ้าค่าที่สองที่เราจะส่งในฟังก์ชันตกในคอลัมน์ D ก็จะส่งกลับ เดอะจับคู่จากคอลัมน์ B มิฉะนั้น ให้ออกจากฟังก์ชัน จบคำสั่งทั้งหมด และไปที่บรรทัดถัดไป
5065
หากเงื่อนไขก่อนหน้านี้ไม่สำเร็จในขณะดำเนินการ ข้อความ "ไม่พบข้อมูล" จะถูกส่งกลับและ รหัสจะออกจากฟังก์ชัน
อ่านเพิ่มเติม: INDEX-MATCH with Multiple Criteria for Partial Text in Excel (2 Ways)
เกณฑ์ – 3: ใช้ VBA เพื่อส่งคืนค่าที่ตรงกันจากตารางที่มีข้อมูลหลายรายการใน Excel
ในส่วนนี้ เราจะเรียนรู้วิธี ส่งคืนค่าที่ตรงกันโดยดัชนีจากตาราง ใน MsgBox ใน VBA Excel
มาดูวิธีแยก Marks จากตารางที่แสดงในของเรา ชุดข้อมูล ( T ชื่อที่ใช้งานได้: TableMatch ) ของนักเรียนบางคนโดยระบุ ชื่อ และ ID ภายในรหัส สำหรับกรณีของเรา ชื่อ และ รหัส จะเป็น ฟินน์ และ 105 ตามลำดับ
ขั้นตอน :
- ประการแรก เปิด Visual Basic Editor จากแท็บ นักพัฒนาซอฟต์แวร์ และ แทรก a โมดูล ในหน้าต่างรหัส
- จากนั้น คัดลอก รหัสต่อไปนี้และ วาง ลงในหน้าต่างรหัส
6789
รหัสของคุณ พร้อมที่จะเรียกใช้แล้ว
- หลังจากนั้น เรียกใช้ รหัสนี้ และดูภาพต่อไปนี้เพื่อดูว่าเกิดอะไรขึ้น
ดังที่คุณเห็นจากภาพด้านบน มีป๊อปอัพ Microsoft Excel ขึ้นกล่องข้อความแสดง Marks: 84 ของ ID: 105 และ Name: Finn ที่เราให้ไว้ในรหัส
<7คำอธิบายรหัส VBA
7442
การกำหนดตัวแปร
7483
การตั้งชื่อแผ่นงานและชื่อตารางภายในตัวแปร
1847
การจัดเก็บ ค่าการค้นหาและคอลัมน์การค้นหาที่จะค้นหา
9685
โค้ดส่วนนี้จะสแกนตั้งแต่ต้นจนจบของตัวห้อย และหากพบว่าตรงกับ ID ที่กำหนดและชื่อในคอลัมน์ค้นหา เก็บผลลัพธ์และปิดงบทั้งหมด นอกจากนี้ ออกจากการวนซ้ำและไปที่ส่วนถัดไปของโค้ด
2258
โยนผลลัพธ์ใน MsgBox
อ่านเพิ่มเติม: ค้นหาและย้อนกลับ ค่าหลายค่ารวมกันเป็นเซลล์เดียวใน Excel
บทสรุป
โดยสรุป บทความนี้แสดงวิธีดำเนินการ INDEX MATCH 3 วิธีที่แตกต่างกัน ในหลายเกณฑ์ ใน Excel ด้วย แมโคร VBA ฉันหวังว่าบทความนี้มีประโยชน์มากสำหรับคุณ อย่าลังเลที่จะถามคำถามเกี่ยวกับหัวข้อ