ตัวอย่างที่ 1: ค้นหาตำแหน่งพนักงานจากรหัส
สูตรค้นหารหัส "EMP005" ในช่วง EmployeeIDs และคืนค่าตำแหน่งที่ 5 (หาก "EMP005" อยู่ลำดับที่ 5 ในช่วง)
=XMATCH("EMP005", EmployeeIDs)
5
ค้นหาตำแหน่งของข้อมูลในช่วงด้วยความยืดหยุ่นและความเร็วสูง
XMATCH คืนค่าตำแหน่งของข้อมูลที่ค้นหาในช่วงหรืออาร์เรย์ เป็นฟังก์ชันรุ่นใหม่ที่พัฒนาจาก MATCH โดยรองรับการค้นหาย้อนกลับ ค้นหาแบบไบนารีสำหรับข้อมูลขนาดใหญ่ และมีค่าเริ่มต้นเป็นการจับคู่แบบตรงทั้งหมด ใช้ร่วมกับ INDEX เพื่อสร้างสูตรค้นหาที่ยืดหยุ่นและทรงพลัง
=XMATCH(lookup_value, lookup_array, [match_mode], [search_mode])
=XMATCH(lookup_value, lookup_array, [match_mode], [search_mode])
| Argument | Type | Required | Default | Description |
|---|---|---|---|---|
| lookup_value | any | Yes | ค่าที่ต้องการค้นหา สามารถเป็นตัวเลข ข้อความ วันที่ หรือค่าตรรกะ | |
| lookup_array | range | Yes | ช่วงหรืออาร์เรย์ที่ต้องการค้นหา ต้องเป็นช่วงแถวหรือคอลัมน์เดียว | |
| match_mode | number | Optional | 0 | โหมดการจับคู่: 0 = ตรงทั้งหมด (ค่าเริ่มต้น) -1 = ตรงทั้งหมด หรือค่าที่เล็กกว่าที่ใกล้เคียงที่สุด 1 = ตรงทั้งหมด หรือค่าที่ใหญ่กว่าที่ใกล้เคียงที่สุด 2 = ค้นหาแบบ Wildcard โดย * ? และ ~ มีความหมายพิเศษ |
| search_mode | number | Optional | 1 | โหมดการค้นหา: 1 = ค้นหาจากต้นไปท้าย (ค่าเริ่มต้น) -1 = ค้นหาจากท้ายไปต้น (ย้อนกลับ) 2 = ค้นหาแบบไบนารีจากน้อยไปมาก (ต้องเรียงข้อมูลจากน้อยไปมาก) -2 = ค้นหาแบบไบนารีจากมากไปน้อย (ต้องเรียงข้อมูลจากมากไปน้อย) |
ใช้ XMATCH ร่วมกับ INDEX เพื่อค้นหาข้อมูลสินค้าจากรหัสหรือชื่อสินค้า แทน VLOOKUP ที่มีข้อจำกัด
ใช้ search_mode = -1 เพื่อค้นหาย้อนกลับและหาตำแหน่งสุดท้ายของข้อมูลที่ซ้ำกัน เช่น ธุรกรรมล่าสุดของลูกค้า
ใช้ search_mode = 2 หรือ -2 เพื่อค้นหาแบบไบนารี ซึ่งเร็วกว่าการค้นหาปกติมาก เหมาะสำหรับข้อมูลหลักพันหรือหลักหมื่นแถว
ใช้ match_mode = 2 พร้อม Wildcard (* และ ?) เพื่อค้นหารหัสสินค้าหรือชื่อที่ตรงกับรูปแบบบางส่วน
ต้องใช้ Excel for Microsoft 365, Excel 2024, Excel 2021 หรือ Excel for the web ไม่รองรับใน Excel 2019 หรือเวอร์ชันเก่ากว่า
สำหรับข้อมูลขนาดใหญ่ (มากกว่า 1,000 แถว) ที่เรียงลำดับแล้ว แนะนำให้ใช้ Binary Search (search_mode = 2 หรือ -2) เพื่อเพิ่มความเร็วในการค้นหาอย่างมาก
สูตรค้นหารหัส "EMP005" ในช่วง EmployeeIDs และคืนค่าตำแหน่งที่ 5 (หาก "EMP005" อยู่ลำดับที่ 5 ในช่วง)
=XMATCH("EMP005", EmployeeIDs)
5
สูตรทำงาน 2 ขั้นตอน:
1. XMATCH ค้นหารหัส "EMP005" ในช่วง EmployeeIDs และคืนค่าตำแหน่ง
2. INDEX ดึงค่าจากช่วง EmployeeNames ตามตำแหน่งที่ XMATCH คืนค่ามา
=INDEX(EmployeeNames, XMATCH("EMP005", EmployeeIDs))
สมชาย ใจดี
สูตรค้นหา "CUST001" โดยใช้ search_mode = -1 (ค้นหาจากล่างขึ้นบน) เพื่อหาธุรกรรมล่าสุด:
1. XMATCH ค้นหาจากล่างขึ้นบน หาตำแหน่งสุดท้ายที่มีรหัส "CUST001"
2. INDEX ดึงยอดซื้อจาก TransactionAmounts ของธุรกรรมนั้น
=INDEX(TransactionAmounts, XMATCH("CUST001", CustomerIDs, 0, -1))
15000
สูตรใช้ match_mode = 2 เพื่อค้นหาแบบ Wildcard:
– "PD*" หมายถึงรหัสที่ขึ้นต้นด้วย "PD" ตามด้วยอักขระใดก็ได้
– สูตรคืนค่า 3 คือตำแหน่งแรกที่พบรหัสขึ้นต้นด้วย PD
=XMATCH("PD*", ProductCodes, 2)
3
สูตรใช้ search_mode = 2 (Binary Search แบบน้อยไปมาก):
– ค้นหายอดขาย 25,000 ใน SalesDataSorted ที่เรียงลำดับแล้ว
– Binary Search มีประสิทธิภาพสูงในข้อมูลขนาดใหญ่ แต่ต้องแน่ใจว่าข้อมูลเรียงลำดับอย่างถูกต้อง
=XMATCH(25000, SalesDataSorted, 0, 2)
8245
XMATCH เป็นฟังก์ชันรุ่นใหม่ที่พัฒนาจาก MATCH โดยมีข้อดีหลายประการ: 1) ค่าเริ่มต้นเป็นการจับคู่แบบตรงทั้งหมด (MATCH เป็น approximate match) 2) รองรับการค้นหาย้อนกลับด้วย search_mode = -1 3) รองรับ Binary Search เพื่อความเร็วในข้อมูลขนาดใหญ่ 4) ไม่จำเป็นต้องเรียงข้อมูลสำหรับ approximate match และ 5) รองรับ Wildcard matching
ควรใช้ INDEX+XMATCH แทน VLOOKUP เมื่อ: 1) ต้องการค้นหาจากคอลัมน์ที่ไม่ใช่คอลัมน์ซ้ายสุด 2) ต้องการป้องกันสูตรพังเมื่อมีการเพิ่ม/ลบคอลัมน์ 3) ต้องการค้นหาย้อนกลับหรือใช้ Binary Search และ 4) ต้องการความยืดหยุ่นในการระบุช่วงข้อมูลอย่างอิสระ VLOOKUP เหมาะสำหรับงานค้นหาง่ายๆ เท่านั้น
XMATCH ใช้ได้ใน Excel for Microsoft 365, Excel 2024, Excel 2021 และ Excel for the web เท่านั้น ไม่สามารถใช้ใน Excel 2019 หรือเวอร์ชันเก่ากว่า ถ้าใช้ Excel เวอร์ชันเก่า แนะนำให้ใช้ MATCH แทน
Binary Search (search_mode = 2 หรือ -2) เร็วกว่าการค้นหาปกติอย่างมากในข้อมูลขนาดใหญ่ ยิ่งข้อมูลมากยิ่งได้เปรียบมากขึ้น สำหรับข้อมูล 10,000 แถว Binary Search สามารถเร็วกว่าหลายสิบเท่า แต่ต้องแน่ใจว่าข้อมูลเรียงลำดับอย่างถูกต้องก่อนใช้ มิฉะนั้นจะได้ผลลัพธ์ผิดพลาด
XMATCH จะคืนค่า #N/A เมื่อ: 1) ไม่พบข้อมูลที่ค้นหา (กรณี match_mode = 0) 2) ใช้ Binary Search กับข้อมูลที่ไม่ได้เรียงลำดับ 3) lookup_array ไม่ใช่ช่วงแถวหรือคอลัมน์เดียว หรือ 4) ค่า match_mode หรือ search_mode ไม่ถูกต้อง สามารถใช้ IFERROR หรือ IFNA เพื่อจัดการกับ error นี้ได้
ฟังก์ชัน XMATCH เป็นเครื่องมือค้นหาตำแหน่งข้อมูลที่ทรงพลังและยืดหยุ่นกว่า MATCH แบบดั้งเดิม รองรับการค้นหาแบบย้อนกลับ ค้นหาแบบไบนารี และรูปแบบการจับคู่ที่หลากหลาย