XMATCH คืนค่าตำแหน่งของข้อมูลที่ค้นหาในช่วงหรืออาร์เรย์ ถือเป็นฟังก์ชันรุ่นใหม่ที่ Microsoft พัฒนามาแก้จุดอ่อนของ MATCH โดยเฉพาะเรื่องค่า Default ที่เป็น Exact Match แทน Approximate Match ทำให้ใช้ง่ายและปลอดภัยกว่ามาก นอกจากนี้ยังรองรับการค้นหาย้อนกลับ Binary Search สำหรับข้อมูลขนาดใหญ่ และการค้นหาแบบ Wildcard ทำให้ยืดหยุ่นกว่า MATCH เดิมหลายเท่า
=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) เพื่อเพิ่มความเร็วในการค้นหาอย่างมาก
XMATCH("EMP005", EmployeeIDs)=XMATCH("EMP005", EmployeeIDs)
5
INDEX(EmployeeNames, XMATCH("EMP005", EmployeeIDs))=INDEX(EmployeeNames, XMATCH("EMP005", EmployeeIDs))
สมชาย ใจดี
INDEX(TransactionAmounts, XMATCH("CUST001", CustomerIDs, 0, -1))=INDEX(TransactionAmounts, XMATCH("CUST001", CustomerIDs, 0, -1))
15000
XMATCH("PD*", ProductCodes, 2)=XMATCH("PD*", ProductCodes, 2)
3
XMATCH(25000, SalesDataSorted, 0, 2)=XMATCH(25000, SalesDataSorted, 0, 2)
8245
XMATCH เป็นฟังก์ชันรุ่นใหม่ที่ Microsoft สร้างมาแก้จุดอ่อนของ MATCH เลยครับ
.
ข้อดีที่เด่นชัด:
1️⃣ ค่า Default เป็น Exact Match (MATCH เป็น Approximate Match ซึ่งทำให้เจอ bug บ่อยมาก 😅)
2️⃣ ค้นหาย้อนกลับได้ (search_mode = -1) เหมาะหาข้อมูลล่าสุด
3️⃣ รองรับ Binary Search เร็วมากสำหรับข้อมูลใหญ่
4️⃣ ค้นหาแบบ Wildcard ได้ (* และ ?)
5️⃣ ไม่ต้องเรียงข้อมูลสำหรับ Approximate Match
.
โดยรวมแล้วใช้ง่ายกว่าและปลอดภัยกว่า MATCH หลายเท่าเลยครับ 😎
ส่วนตัวผมแนะนำให้ใช้ INDEX+XMATCH แทน VLOOKUP เลยครับ ในกรณีเหล่านี้:
.
✅ **ควรใช้ INDEX+XMATCH เมื่อ:**
1️⃣ ต้องการค้นหาจากคอลัมน์ที่ไม่ใช่คอลัมน์ซ้ายสุด (VLOOKUP ทำไม่ได้)
2️⃣ ต้องการป้องกันสูตรพังเมื่อมีการเพิ่ม/ลบคอลัมน์
3️⃣ ต้องการค้นหาย้อนกลับหรือใช้ Binary Search
4️⃣ ต้องการความยืดหยุ่นในการระบุช่วงข้อมูลอย่างอิสระ
.
จริงๆ แล้ว VLOOKUP เหมาะสำหรับงานค้นหาง่ายๆ ที่ไม่ซับซ้อนเท่านั้น ถ้าทำงานกับข้อมูลใหญ่หรือซับซ้อน INDEX+XMATCH จะดีกว่าเยอะครับ 💡
XMATCH ใช้ได้เฉพาะ:
– Excel for Microsoft 365
– Excel 2024
– Excel 2021
– Excel for the web
.
❌ **ใช้ไม่ได้ใน:** Excel 2019 หรือเวอร์ชันเก่ากว่า
.
ถ้าใช้ Excel เวอร์ชันเก่าอยู่ ก็ต้องใช้ MATCH แบบดั้งเดิมแทนครับ แต่ถ้ามีโอกาสอัปเกรด แนะนำให้ลองใช้ Excel 365 นะครับ ได้ XMATCH, XLOOKUP และฟังก์ชันใหม่ๆ อีกเพียบ 😎
เร็วกว่า**มากกกก**ครับ ยิ่งข้อมูลเยอะยิ่งได้เปรียบ 🚀
.
**เปรียบเทียบความเร็ว:**
– ข้อมูล 1,000 แถว → เร็วกว่า ~10 เท่า
– ข้อมูล 10,000 แถว → เร็วกว่า ~100 เท่า
– ข้อมูล 100,000 แถว → เร็วกว่าหลายร้อยเท่า!
.
⚠️ **ข้อแม้สำคัญ:** ข้อมูล**ต้องเรียงลำดับถูกต้อง**ก่อนใช้
– search_mode = 2 → ต้องเรียงน้อยไปมาก
– search_mode = -2 → ต้องเรียงมากไปน้อย
.
ถ้าข้อมูลไม่ได้เรียง จะได้ผลลัพธ์ผิดโดยไม่มี error เตือน ระวังตรงนี้มากครับ! 😅
XMATCH จะคืนค่า #N/A ในกรณีเหล่านี้:
.
❌ **สาเหตุที่เจอบ่อย:**
1️⃣ ไม่พบข้อมูลที่ค้นหา (กรณี match_mode = 0)
2️⃣ ใช้ Binary Search กับข้อมูลที่ไม่ได้เรียงลำดับ
3️⃣ lookup_array ไม่ใช่ช่วงแถวหรือคอลัมน์เดียว (เป็นช่วง 2 มิติ)
4️⃣ ค่า match_mode หรือ search_mode ไม่ถูกต้อง
.
💡 **วิธีแก้:** ใช้ IFERROR หรือ IFNA ครอบไว้
“`
=IFERROR(XMATCH(…), “ไม่พบข้อมูล”)
“`
.
แบบนี้จะได้ข้อความแจ้งเตือนที่อ่านง่ายกว่า #N/A ครับ 😊
XMATCH คือฟังก์ชันค้นหาตำแหน่งที่ Microsoft สร้างมาเพื่อ “แก้ปมด้อย” ของ MATCH โดยเฉพาะ 😎
.
ที่เจ๋งคือ XMATCH ใช้ค่า Default เป็น Exact Match ให้เลย ไม่เหมือน MATCH ที่ Default เป็น Approximate Match แล้วมักทำให้เจอ bug บ่อยๆ 😅
.
นอกจากนี้ยังรองรับการค้นหาย้อนกลับ (หาข้อมูลล่าสุด), Binary Search สำหรับข้อมูลขนาดใหญ่ (เร็วมากกกก 🚀), และการค้นหาแบบ Wildcard ด้วย
.
ส่วนตัวผมคิดว่า XMATCH เป็นหนึ่งในฟังก์ชันที่ดีที่สุดใน Excel 365 เลยครับ ยืดหยุ่นและปลอดภัยกว่า MATCH หลายเท่า 💡