TLDR สรุปสั้นๆ
XMATCH ใช้ค้นหาตำแหน่งของข้อมูลในช่วงที่ระบุ ได้ยืดหยุ่นกว่า MATCH ปกติ
คำอธิบาย
ฟังก์ชัน XMATCH ใน Excel ช่วยในการค้นหาตำแหน่งของข้อมูลที่ต้องการในช่วงหรืออาร์เรย์ที่ระบุ และคืนค่าตำแหน่งของข้อมูลนั้น ซึ่งค้นหาได้ยืดหยุ่นกว่า MATCH ปกติ เช่น หาจากทิศืางใดก็ได้
มีครั้งแรกในเวอร์ชันไหน
2021
รูปแบบคำสั่ง (Syntax)
=XMATCH(lookup_value, lookup_array, [match_mode], [search_mode])
Arguments
-
lookup_value (Required – any)
ค่าที่ต้องการค้นหา เช่น ตัวเลขหรือตัวอักษรที่ต้องการค้นหาในช่วงข้อมูล -
lookup_array (Required – array)
ช่วงหรืออาร์เรย์ที่ต้องการค้นหา เป็นแถวคอลัมน์ที่มีข้อมูลอยู่ - match_mode (Optional – number) โหมดการจับคู่:
- 0 = จับคู่แบบเป๊ะ (ค่าเริ่มต้น)
- -1 = จับคู่แบบเป๊ะหรือข้อมูลตัวถัดไปที่เล็กกว่า
- 1 = จับคู่แบบเป๊ะหรือข้อมูลตัวถัดไปที่ใหญ่กว่า
- 2 = ใช้ wildcard (เครื่องหมาย * และ ? สำหรับสัญลักษณ์แทน)
- search_mode (Optional – number) โหมดการค้นหา:
1
= ค้นหาจากบนลงล่าง (ซ้ายไปขวา)-1
= ค้นหาจากล่างขึ้นบน (ขวาไปซ้าย)2
= Binary Search (ค่า lookup_array ต้องเรียงลำดับน้อยไปมาก)-2
= Binary Search (ค่า lookup_array ต้องเรียงลำดับมากไปน้อย)
ตัวอย่างการใช้งาน (Examples)

- Formula:
Description: ค้นหาตำแหน่งของเลข TXID หมายเลข TX0005 ในคอลัมน์ TXID แบบ Exact Match (ค่า Default ของ match_mode ของ XMATCH คือ Exact Match)=XMATCH("TX0005", TxData[OrderID])
Result: 5 (เพราะ TX0005 อยู่ในลำดับที่ 5) - Formula:
Description: ค้นหาตำแหน่งของหัวคอลัมน์ ที่มีชื่อว่า “SalesRep” ในตารางที่ชื่อ Txdata แบบ Exact Match (ค่า Default ของ match_mode ของ XMATCH คือ Exact Match)=XMATCH("SalesRep",TxData[#Headers])
Result:4 เพราะ “SalesRep” เป็นคอลัมน์ที่ 4 ของตาราง TxData - Formula:
Description: ต้องการค้นหา วันที่ที่ใกล้เคียงที่สุดและน้อยกว่าหรือเท่ากับ 15/02/2025 (ไม่จำเป็นต้องเรียงค่าในคอลัมน์ Date เหมือนกับ MATCH ปกติ)=XMATCH(DATE(2025,2,15), TxData[Date], -1)
Result: ได้ลำดับ 3 ซึ่งมาจากการหาเจอวันที่ 03/02/2025 เพราะ เป็นวันที่ที่ใกล้เคียงที่สุดและน้อยกว่าหรือเท่ากับ 15/02/2025 - Formula:
Description: ค้นหายอดขาย (SalesAmt) ของ Monitor อันแรกที่เจอ โดยใช้ INDEX+XMATCH ในการช่วยดึงค่าที่ต้องการ=INDEX(TxData[SalesAmt], XMATCH("Monitor", TxData[Product Type]))
Result: 2,500 (ยอดขายของ Monitor อันแรกที่เจอ จากบนลงล่าง)
Tips & Tricks
ใช้ wildcard เช่น * และ ? เพื่อค้นหาได้มากยิ่งขึ้น เช่น ค้นหาชื่อที่ขึ้นต้นด้วย ‘Pro’ ใช้ Pro* พร้อมกับตั้งค่า match_mode เป็น 2
ข้อควรระวัง (Cautions)
เลือกช่วงข้อมูลให้ถูกต้อง เพราะอาจทำให้ผลลัพธ์ไม่ถูกต้องหากเลือกช่วงผิด นอกจากนี้ ตรวจสอบประเภทข้อมูลของ lookup_value และ lookup_array ให้ตรงกันเพื่อหลีกเลี่ยงข้อผิดพลาด
ฟังก์ชันที่เกี่ยวข้อง
References
ขอบคุณที่เข้ามาอ่านนะครับ ❤️
Leave a Reply