ถ้าคุณใช้ Excel มาสักพัก คุณน่าจะเคยพึ่ง VLOOKUP หรือ INDEX/MATCH หลายครั้ง วันที่ต้องต่อสู้กับข้อจำกัดของ VLOOKUP และความซับซ้อนของ INDEX/MATCH จบแล้ว พบกับ XLOOKUP—ฟังก์ชัน lookup สมัยใหม่ของ Excel ที่ยืดหยุ่น เรียบง่าย และทรงพลังพอที่จะแทนที่ทั้งสอง
ในบทช่วยสอนนี้ เราจะแบ่งปัน 3 เหตุผลว่าทำไม XLOOKUP เป็นเพื่อนสนิทใหม่ของคุณ คุณจะเห็นว่ามันทำให้งาน lookup ทุกวันเร็วขึ้น สะอาดขึ้น และฉลาดขึ้น—ไม่ต้องมี workaround
Syntax:
=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
ฟังก์ชัน XLOOKUP เป็นฟังก์ชัน lookup สมัยใหม่ของ Excel ที่หาค่าในคอลัมน์ (หรือแถว) หนึ่งและคืนค่าที่เกี่ยวข้องจากอีกคอลัมน์ (หรือแถว) หนึ่ง มันออกแบบมาเพื่อแทนที่ VLOOKUP และ INDEX/MATCH โดยเป็นไปอย่างง่ายและยืดหยุ่นกว่า
เหตุผลที่ 1: XLOOKUP ค้นหาได้ในทิศทางใดก็ได้ (ซ้าย หรือ ขวา)
VLOOKUP ค้นหาได้เฉพาะทางขวาของคอลัมน์ lookup เท่านั้น—ถ้าคอลัมน์ lookup ไม่ใช่คอลัมน์แรกใน table array สูตรจะล้มเหลว INDEX/MATCH แก้ปัญหานี้ได้ แต่อ่านยากเพราะต้องซ้อนสองฟังก์ชัน ซึ่งอาจระยุ่งกับข้อมูลใหญ่
XLOOKUP กลับกลับมา: มันแยก lookup range ออกจาก return range ดังนั้นคุณสามารถค้นหาซ้าย ขวา บน ลง ได้โดยไม่มีอุปสรรค
สมมติว่าคุณมีชุดข้อมูลการขาย และต้องการหา Product ID โดยค้นหาจาก Product Name
VLOOKUP:
- เลือกเซลล์และใส่สูตรต่อไปนี้
=VLOOKUP(H5,A2:F23,1,FALSE)
สูตรนี้คืน #N/A error เพราะ VLOOKUP ไม่สามารถค้นหาซ้ายได้ (Product ID อยู่ก่อน Product Name ในชีท) เพื่อใช้ VLOOKUP ที่นี่ คุณต้องจัดเรียงคอลัมน์ใหม่—ซึ่งมักไม่เป็นไปได้เพราะอาจทำลายโครงสร้างข้อมูลและสูตร downstream
INDEX/MATCH:
- เลือกเซลล์และใช้ INDEX/MATCH combo
=INDEX(A2:A23, MATCH(H8, B2:B23, 0))
สูตรนี้คืน Product ID (P006) มันทำงานได้ แต่คุณต้องระบุทั้งสองช่วง และให้แน่ใจว่า MATCH เป็น exact (0) ซึ่งเพิ่มความยาว
XLOOKUP:
XLOOKUP ไม่สนใจลำดับคอลัมน์ คุณเพียงบอกว่าค้นหาอะไร และคืนค่าจากไหน
- เลือกเซลล์และใส่สูตร XLOOKUP แบบไดนามิก
=XLOOKUP(H12, B2:B23, A2:A23)
สูตรนี้ค้นหา Product Name และคืน Product ID ที่ตรงกัน (P006)—แม้ ID จะอยู่ทางซ้าย Syntax สะอาด ไม่ต้องซ้อน
การใช้งานจริง:
สมมติว่าแดชบอร์ดขายของคุณให้ผู้ใช้พิมพ์ชื่อสินค้าในกล่องค้นหา คุณสามารถดึง Product ID—หรือรายละเอียดหลายอย่าง (ราคา สต็อก supplier) ได้ทันทีโดยไม่ต้องจัดเรียงคอลัมน์ใหม่:
=XLOOKUP(H12, B2:B23, A2:E23)
นี่คืนหลายคอลัมน์โดย "spill" ไปยังเซลล์ข้างเคียง ดังนั้นคุณได้ข้อมูลสินค้าทั้งหมดในขั้นตอนเดียว
เหตุผลที่ 2: Error Handling ในตัว (ไม่มี #N/A อีกต่อไป)
เมื่อไม่พบค่า lookup Excel คืน #N/A ด้วย VLOOKUP หรือ INDEX/MATCH คุณมัก wrap สูตรด้วย IFERROR เพื่อจัดการอย่างสง่างาม—เพิ่มการซ้อนอีกชั้น
XLOOKUP มีอาร์กิวเมนต์ if_not_found ในตัว ดังนั้นคุณสามารถระบุข้อความหรือค่า fallback ที่เป็นมิตรได้ในสูตรโดยตรง
ลองค้นหาราคาสินค้าที่อาจไม่มีในฐานข้อมูล (เช่น "Wireless Charger")
VLOOKUP + IFERROR:
- เลือกเซลล์และใส่สูตรต่อไปนี้
=IFERROR(VLOOKUP(H4,D2:F23,1,FALSE), "Not Found")
นี่ทำงานได้ แต่ verbose และเพิ่มชั้นการซ้อนอีก
INDEX/MATCH + IFERROR:
- เลือกเซลล์และใส่สูตรต่อไปนี้
=IFERROR(INDEX(D2:D23, MATCH(H8, B2:B23, 0)), "Not Found")
อีกครั้ง ทำงานได้ แต่วrapper เพิ่มทำให้สูตรยาวขึ้น
XLOOKUP:
อาร์กิวเมนต์ if_not_found ของ XLOOKUP จัดการค่าที่หายไปอย่างสง่างาม
- เลือกเซลล์และใส่สูตรต่อไปนี้
=XLOOKUP(H12, B2:B23, D2:D23, "Not Found")
สูตรนี้ค้นหา Product Name ถ้าไม่พบ คืน "Not Found" มันกระชับและหลีกเลี่ยงฟังก์ชันเพิ่มเติม
เหตุผลที่ 3: Wildcard Searches ทำได้ง่าย
VLOOKUP รองรับ wildcards (* และ ?) ใน exact-match mode (FALSE) สำหรับ text lookups แต syntax ไม่ชัดเจนเสมอไป INDEX/MATCH ก็รองรับ wildcards เพราะ MATCH จดจำพวกมันเมื่อ match_type เป็น 0 XLOOKUP ทำให้เจตนาชัดเจนด้วย match_mode เป็น 2 สำหรับ wildcard matching ซึ่งเพิ่มความชัดเจนและลดความสิ้นหวัง
จินตนาการว่าคุณจำแค่ส่วนของชื่อสินค้า—อาจขึ้นต้นด้วย "Lap"—และคุณต้องการหาราคา
VLOOKUP:
- เลือกเซลล์และใส่สูตรต่อไปนี้
=VLOOKUP("Lap*", B2:D23, 3, FALSE)
นี่อาจทำงานกับ exact match ใช้ wildcards และไม่ต้องการข้อมูลที่จัดเรียงแล้ว อย่างไรก็ตาม อาร์กิวเมนต์ "column index" อาจเปราะบางถ้าคอลัมน์เคลื่อนที่
INDEX/MATCH:
- เลือกเซลล์และใส่สูตรต่อไปนี้
=INDEX(D2:D23, MATCH("Lap*", B2:B23, 0))
นี่ก็รองรับ wildcards ผ่าน MATCH มันน่าเชื่อถือ แต่การตั้งค่าสองช่วง verbose กว่า
XLOOKUP:
match_mode ของ XLOOKUP ทำให้ wildcard searches ตรงไปตรงมา
- เลือกเซลล์และใส่สูตรต่อไปนี้
=XLOOKUP("Lap*", B2:B23, D2:D23, "No match", 2)
- "Lap*": partial match (จับคู่ข้อความขึ้นต้นด้วย "Lap")
- Lookup array:
B2:B23 - Return array:
D2:D23 - if_not_found: "No match"
- 2: เปิดใช้งาน wildcard search
สูตรนี้คืนราคาสินค้า (เช่น $30) โดยใช้ wildcard matching—เหมาะสำหรับการค้นหาชื่อบางส่วน SKU lookups หรือเมื่อคุณไม่มีค่าที่แน่นอน
หมายเหตุสำคัญ: XLOOKUP พร้อมใช้งานใน Microsoft 365, Excel 2021 และรุ่นใหม่กว่า ถ้าคุณอยู่บนรุ่นเก่า คุณต้องอยู่กับ VLOOKUP หรือ INDEX/MATCH לעת עתה
เคล็ดลับ Wildcard:
| Symbol | Meaning | Example | Matches |
|---|---|---|---|
| * | Any number of characters | "Lap*" | Laptop Stand |
| ? | Single character | "P00?" | P001, P002, etc. |
| ~ | Escape wildcard | "Power~*" | Finds "Power*" literally |
ดาวน์โหลด Practice Workbook
Final Thoughts
XLOOKUP ไม่ใช่แค่ฟังก์ชัน lookup อีกตัวหนึ่ง—มันคือการคิดใหม่ว่าการ lookup ควรทำงานใน Excel อย่างไร ในบทช่วยสอนนี้ เราแสดง 3 เหตุผลว่าทำไม XLOOKUP เป็นเพื่อนสนิทใหม่ของคุณ ด้วยการรวมความยืดหยุ่นทางทิศทาง error handling ในตัว และ wildcard matching ที่ชัดเจน มันประหยัดเวลาและป้องกันข้อผิดพลาดของสูตร เมื่อคุณลองใช้ คุณจะไม่กลับไปใช้ตัวเก่าอีก