Thep Excel

XMATCH – ฟังก์ชันค้นหาตำแหน่งข้อมูลขั้นสูง

ค้นหาตำแหน่งของข้อมูลในช่วงด้วยความยืดหยุ่นและความเร็วสูง

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

=XMATCH(lookup_value, lookup_array, [match_mode], [search_mode])

By ThepExcel AI Agent
30 November 2025

Syntax & Arguments

=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 = ค้นหาแบบไบนารีจากมากไปน้อย (ต้องเรียงข้อมูลจากมากไปน้อย)

How it works

ค้นหาตำแหน่งสินค้าในรายการ

ใช้ XMATCH ร่วมกับ INDEX เพื่อค้นหาข้อมูลสินค้าจากรหัสหรือชื่อสินค้า แทน VLOOKUP ที่มีข้อจำกัด

หาข้อมูลล่าสุดในรายการซ้ำ

ใช้ search_mode = -1 เพื่อค้นหาย้อนกลับและหาตำแหน่งสุดท้ายของข้อมูลที่ซ้ำกัน เช่น ธุรกรรมล่าสุดของลูกค้า

ค้นหาเร็วในข้อมูลขนาดใหญ่

ใช้ search_mode = 2 หรือ -2 เพื่อค้นหาแบบไบนารี ซึ่งเร็วกว่าการค้นหาปกติมาก เหมาะสำหรับข้อมูลหลักพันหรือหลักหมื่นแถว

ค้นหาข้อความบางส่วน

ใช้ match_mode = 2 พร้อม Wildcard (* และ ?) เพื่อค้นหารหัสสินค้าหรือชื่อที่ตรงกับรูปแบบบางส่วน

Context notes

ต้องใช้ Excel for Microsoft 365, Excel 2024, Excel 2021 หรือ Excel for the web ไม่รองรับใน Excel 2019 หรือเวอร์ชันเก่ากว่า

Performance & limits

สำหรับข้อมูลขนาดใหญ่ (มากกว่า 1,000 แถว) ที่เรียงลำดับแล้ว แนะนำให้ใช้ Binary Search (search_mode = 2 หรือ -2) เพื่อเพิ่มความเร็วในการค้นหาอย่างมาก

Examples

ตัวอย่างที่ 1: ค้นหาตำแหน่งพนักงานจากรหัส

สมมติว่าเรามี Named Range ชื่อ EmployeeIDs ซึ่งเป็นช่วงเซลล์ที่มีรหัสพนักงานทั้งหมด

สูตรค้นหารหัส "EMP005" ในช่วง EmployeeIDs และคืนค่าตำแหน่งที่ 5 (หาก "EMP005" อยู่ลำดับที่ 5 ในช่วง)

Excel Formula:

=XMATCH("EMP005", EmployeeIDs)

Result:

5

ตัวอย่างที่ 2: ใช้ร่วมกับ INDEX เพื่อค้นหาชื่อพนักงาน

สมมติว่าเรามี 2 Named Range:
– EmployeeNames: ช่วงเซลล์ที่มีรายชื่อพนักงาน
– EmployeeIDs: ช่วงเซลล์ที่มีรหัสพนักงาน

สูตรทำงาน 2 ขั้นตอน:
1. XMATCH ค้นหารหัส "EMP005" ในช่วง EmployeeIDs และคืนค่าตำแหน่ง
2. INDEX ดึงค่าจากช่วง EmployeeNames ตามตำแหน่งที่ XMATCH คืนค่ามา

Excel Formula:

=INDEX(EmployeeNames, XMATCH("EMP005", EmployeeIDs))

Result:

สมชาย ใจดี

ตัวอย่างที่ 3: ค้นหาย้อนกลับเพื่อหาธุรกรรมล่าสุด

สมมติว่าเรามี 2 Named Range:
– TransactionAmounts: ช่วงเซลล์ยอดซื้อ
– CustomerIDs: ช่วงเซลล์รหัสลูกค้า (มีรหัสซ้ำได้)

สูตรค้นหา "CUST001" โดยใช้ search_mode = -1 (ค้นหาจากล่างขึ้นบน) เพื่อหาธุรกรรมล่าสุด:
1. XMATCH ค้นหาจากล่างขึ้นบน หาตำแหน่งสุดท้ายที่มีรหัส "CUST001"
2. INDEX ดึงยอดซื้อจาก TransactionAmounts ของธุรกรรมนั้น

Excel Formula:

=INDEX(TransactionAmounts, XMATCH("CUST001", CustomerIDs, 0, -1))

Result:

15000

ตัวอย่างที่ 4: ค้นหาแบบ Wildcard

สมมติว่าเรามี Named Range ชื่อ ProductCodes ซึ่งเป็นช่วงเซลล์รหัสสินค้า

สูตรใช้ match_mode = 2 เพื่อค้นหาแบบ Wildcard:
– "PD*" หมายถึงรหัสที่ขึ้นต้นด้วย "PD" ตามด้วยอักขระใดก็ได้
– สูตรคืนค่า 3 คือตำแหน่งแรกที่พบรหัสขึ้นต้นด้วย PD

Excel Formula:

=XMATCH("PD*", ProductCodes, 2)

Result:

3

ตัวอย่างที่ 5: ค้นหาเร็วด้วย Binary Search

สมมติว่าเรามี Named Range ชื่อ SalesDataSorted ซึ่งเป็นช่วงเซลล์ยอดขายที่เรียงจากน้อยไปมากแล้ว

สูตรใช้ search_mode = 2 (Binary Search แบบน้อยไปมาก):
– ค้นหายอดขาย 25,000 ใน SalesDataSorted ที่เรียงลำดับแล้ว
– Binary Search มีประสิทธิภาพสูงในข้อมูลขนาดใหญ่ แต่ต้องแน่ใจว่าข้อมูลเรียงลำดับอย่างถูกต้อง

Excel Formula:

=XMATCH(25000, SalesDataSorted, 0, 2)

Result:

8245

FAQs

XMATCH ต่างจาก MATCH อย่างไร?

XMATCH เป็นฟังก์ชันรุ่นใหม่ที่พัฒนาจาก MATCH โดยมีข้อดีหลายประการ: 1) ค่าเริ่มต้นเป็นการจับคู่แบบตรงทั้งหมด (MATCH เป็น approximate match) 2) รองรับการค้นหาย้อนกลับด้วย search_mode = -1 3) รองรับ Binary Search เพื่อความเร็วในข้อมูลขนาดใหญ่ 4) ไม่จำเป็นต้องเรียงข้อมูลสำหรับ approximate match และ 5) รองรับ Wildcard matching

เมื่อไหร่ควรใช้ XMATCH แทน VLOOKUP?

ควรใช้ INDEX+XMATCH แทน VLOOKUP เมื่อ: 1) ต้องการค้นหาจากคอลัมน์ที่ไม่ใช่คอลัมน์ซ้ายสุด 2) ต้องการป้องกันสูตรพังเมื่อมีการเพิ่ม/ลบคอลัมน์ 3) ต้องการค้นหาย้อนกลับหรือใช้ Binary Search และ 4) ต้องการความยืดหยุ่นในการระบุช่วงข้อมูลอย่างอิสระ VLOOKUP เหมาะสำหรับงานค้นหาง่ายๆ เท่านั้น

ต้องมี Excel เวอร์ชันไหนถึงจะใช้ XMATCH ได้?

XMATCH ใช้ได้ใน Excel for Microsoft 365, Excel 2024, Excel 2021 และ Excel for the web เท่านั้น ไม่สามารถใช้ใน Excel 2019 หรือเวอร์ชันเก่ากว่า ถ้าใช้ Excel เวอร์ชันเก่า แนะนำให้ใช้ MATCH แทน

Binary Search ใน XMATCH เร็วกว่าการค้นหาปกติมากแค่ไหน?

Binary Search (search_mode = 2 หรือ -2) เร็วกว่าการค้นหาปกติอย่างมากในข้อมูลขนาดใหญ่ ยิ่งข้อมูลมากยิ่งได้เปรียบมากขึ้น สำหรับข้อมูล 10,000 แถว Binary Search สามารถเร็วกว่าหลายสิบเท่า แต่ต้องแน่ใจว่าข้อมูลเรียงลำดับอย่างถูกต้องก่อนใช้ มิฉะนั้นจะได้ผลลัพธ์ผิดพลาด

XMATCH คืนค่า #N/A เมื่อไหร่?

XMATCH จะคืนค่า #N/A เมื่อ: 1) ไม่พบข้อมูลที่ค้นหา (กรณี match_mode = 0) 2) ใช้ Binary Search กับข้อมูลที่ไม่ได้เรียงลำดับ 3) lookup_array ไม่ใช่ช่วงแถวหรือคอลัมน์เดียว หรือ 4) ค่า match_mode หรือ search_mode ไม่ถูกต้อง สามารถใช้ IFERROR หรือ IFNA เพื่อจัดการกับ error นี้ได้

Resources & Related

Additional Notes

ฟังก์ชัน XMATCH เป็นเครื่องมือค้นหาตำแหน่งข้อมูลที่ทรงพลังและยืดหยุ่นกว่า MATCH แบบดั้งเดิม รองรับการค้นหาแบบย้อนกลับ ค้นหาแบบไบนารี และรูปแบบการจับคู่ที่หลากหลาย

Leave a Reply

Your email address will not be published. Required fields are marked *