XLOOKUP Excel ใช้อย่างไร? พร้อมตัวอย่างแทน VLOOKUP สำหรับงานจริง
ต้องดึงชื่อสินค้า ราคา แผนก หรือข้อมูลจากอีกตารางหนึ่ง? XLOOKUP ช่วยให้สูตร Lookup อ่านง่ายขึ้น ค้นหาได้ทั้งซ้ายและขวา และกำหนดข้อความเมื่อหาไม่เจอได้ในสูตรเดียว บทความนี้พาทำตั้งแต่พื้นฐานจนถึงตัวอย่างที่ใช้กับงานจริงครับ
START HERE
XLOOKUP คืออะไร? ทำไมคนใช้ Excel ควรรู้จัก
XLOOKUP เป็นฟังก์ชันสำหรับค้นหาค่าในช่วงข้อมูลหนึ่ง แล้วคืนค่าที่อยู่ในแถวเดียวกันจากอีกช่วงหนึ่ง งานที่พบได้บ่อย เช่น ค้นหารหัสสินค้าแล้วดึงชื่อสินค้า ค้นหารหัสพนักงานแล้วดึงแผนก หรือค้นหารหัสลูกค้าแล้วดึงเครดิตเทอม
จุดที่ทำให้ XLOOKUP ใช้ง่ายกว่า VLOOKUP ในหลายสถานการณ์คือ เราระบุ ช่วงที่ค้นหา และ ช่วงที่ต้องการคืนค่า แยกกัน จึงไม่ต้องนับว่า “ค่าที่ต้องการอยู่คอลัมน์ที่เท่าไรของตาราง” และยังคืนค่าจากคอลัมน์ด้านซ้ายของคอลัมน์ค้นหาได้ด้วย
XLOOKUP = “หาค่านี้ในช่วงไหน” + “ถ้าเจอแล้วให้คืนค่าจากช่วงไหน” เมื่อเข้าใจสองคำถามนี้ สูตรจะอ่านง่ายขึ้นมากครับ
XLOOKUP เหมาะกับงานแบบไหน?
ดึงชื่อสินค้า ราคา กลุ่มสินค้า หรือ Supplier จากรหัสที่กรอกไว้
ค้นหารหัสพนักงานแล้วคืนชื่อ แผนก ตำแหน่ง หรือข้อมูลที่เกี่ยวข้อง
ดึง Account, Cost Center, เครดิตเทอม หรือข้อมูลอ้างอิงจาก Master Data
FORMULA STRUCTURE
โครงสร้างสูตร XLOOKUP
=XLOOKUP(lookup_value, lookup_array, return_array, [if_not_found], [match_mode], [search_mode])
| Argument | ความหมาย | จำเป็น? |
|---|---|---|
| lookup_value | ค่าที่เราต้องการค้นหา เช่น รหัสสินค้า P003 | จำเป็น |
| lookup_array | ช่วงข้อมูลที่ Excel ต้องใช้ค้นหา | จำเป็น |
| return_array | ช่วงข้อมูลที่จะคืนผลลัพธ์เมื่อค้นหาเจอ | จำเป็น |
| if_not_found | ข้อความหรือค่าที่ให้แสดงเมื่อไม่พบข้อมูล | ไม่จำเป็น |
| match_mode | กำหนดรูปแบบการจับคู่ เช่น Exact หรือ Wildcard | ไม่จำเป็น |
| search_mode | กำหนดทิศทางหรือวิธีค้นหา เช่น ค้นจากท้ายขึ้นหน้า | ไม่จำเป็น |
BASIC EXAMPLE
ตัวอย่างพื้นฐาน: ค้นหารหัสสินค้าแล้วดึงชื่อสินค้า
สมมติว่าเรามี Master สินค้าอยู่ในคอลัมน์ H:K และต้องการกรอกรหัสสินค้าที่ B2 เพื่อให้ Excel ดึงชื่อสินค้ากลับมาอัตโนมัติ
| B | C | H | I | J | K | |
|---|---|---|---|---|---|---|
| 2 | รหัสที่ต้องการค้นหา | ชื่อสินค้า | Product ID | Product Name | Category | Price |
| 3 | P003 | Keyboard | P001 | Notebook Pro | Office | 24,900 |
| 4 | P002 | Wireless Mouse | Accessory | 890 | ||
| 5 | P003 | Keyboard | Accessory | 1,290 | ||
| 6 | P004 | Monitor 27" | Display | 7,990 | ||
| 7 | P005 | USB-C Hub | Accessory | 1,590 |
ตัวอย่างนี้กำหนดให้ B3 เป็นค่าที่ค้นหา และ H3:H7 เป็นช่วงรหัสสินค้า
=XLOOKUP(B3,$H$3:$H$7,$I$3:$I$7)
สูตรนี้อ่านได้ตรง ๆ ว่า “นำค่าจาก B3 ไปค้นหาใน H3:H7 ถ้าเจอให้คืนค่าจาก I3:I7 ในแถวเดียวกัน” ผลลัพธ์คือ Keyboard
ถ้าต้องการดึงราคาแทนชื่อสินค้า
=XLOOKUP(B3,$H$3:$H$7,$K$3:$K$7)
เปลี่ยนเฉพาะ return_array จากคอลัมน์ชื่อสินค้า I3:I7 เป็นคอลัมน์ราคา K3:K7 ก็จะได้ผลลัพธ์ 1,290
IF NOT FOUND
ถ้าค้นหาไม่เจอ ให้แสดงข้อความแทน #N/A
ถ้ารหัสที่ค้นหาไม่มีอยู่ใน Master Data XLOOKUP จะคืนค่า #N/A เมื่อเราไม่ได้กำหนดค่าพิเศษไว้ แต่สามารถใช้ Argument ตัวที่ 4 เพื่อบอก Excel ว่าต้องการให้แสดงอะไรแทนได้เลย
=XLOOKUP(B3,$H$3:$H$7,$I$3:$I$7,"ไม่พบรหัสสินค้า")
เราไม่จำเป็นต้องซ้อน IFERROR เพียงเพื่อเปลี่ยนข้อความ กรณี “ค้นหาไม่พบ” เพราะ XLOOKUP มี if_not_found สำหรับกรณีนี้โดยตรง
if_not_found ใช้สำหรับกรณีไม่พบค่าที่ตรงกัน ไม่ได้หมายความว่าจะจัดการ Error ทุกประเภทในข้อมูลต้นทางให้ทั้งหมด
LOOK LEFT OR RIGHT
XLOOKUP ค้นหาย้อนกลับจากขวาไปซ้ายได้
จุดที่หลายคนชอบใน XLOOKUP คือ คอลัมน์ที่ใช้ค้นหาไม่จำเป็นต้องอยู่ซ้ายสุดของตาราง เพราะเราเลือก lookup_array และ return_array แยกกัน
ตัวอย่างเช่น คอลัมน์ H เป็นชื่อแผนก แต่คอลัมน์ I เป็นรหัสพนักงาน เราสามารถค้นหารหัสจากคอลัมน์ I แล้วคืนชื่อแผนกจากคอลัมน์ H ได้โดยตรง
=XLOOKUP(B2,$I$3:$I$7,$H$3:$H$7,"ไม่พบพนักงาน")
VLOOKUP แบบปกติค้นหาโดยอาศัยคอลัมน์แรกของ table_array ดังนั้นการค้นหาจากขวาไปซ้ายมักต้องจัดโครงสร้างข้อมูลใหม่ หรือใช้วิธีอื่น เช่น INDEX + MATCH แต่ XLOOKUP ทำได้ตรงกว่าในสถานการณ์นี้
XLOOKUP VS VLOOKUP
XLOOKUP ต่างจาก VLOOKUP อย่างไร?
| เรื่องที่เปรียบเทียบ | XLOOKUP | VLOOKUP |
|---|---|---|
| Exact Match | เป็นค่าเริ่มต้น | โดยทั่วไปต้องระบุ FALSE หรือ 0 เมื่ออยาก Exact Match |
| ช่วงค้นหา / ช่วงผลลัพธ์ | ระบุแยกกัน | ใช้ Table Array และหมายเลขคอลัมน์ |
| ค้นหาจากขวาไปซ้าย | ทำได้โดยตรง | ไม่ใช่รูปแบบการใช้งานตรง ๆ ของ VLOOKUP |
| กรณีไม่พบข้อมูล | มี if_not_found | มักใช้ IFERROR/IFNA ช่วย |
| คืนหลายคอลัมน์ | ทำได้เมื่อ return_array ครอบคลุมหลายคอลัมน์ | สูตรหนึ่งโดยทั่วไปคืนค่าตาม col_index_num เดียว |
| Excel 2016 / 2019 | ไม่พร้อมใช้งาน | ใช้งานได้ |
สูตรเดียวกันในมุม XLOOKUP และ VLOOKUP
=XLOOKUP(B3,$H$3:$H$7,$I$3:$I$7,"ไม่พบ")
=IFNA(VLOOKUP(B3,$H$3:$K$7,2,FALSE),"ไม่พบ")
ไม่ได้หมายความว่า VLOOKUP “ใช้ไม่ได้” ครับ ถ้าไฟล์ขององค์กรยังต้องรองรับ Excel 2016 หรือ 2019 VLOOKUP, INDEX/MATCH หรือสูตรอื่นอาจยังจำเป็น สิ่งสำคัญคือเลือกสูตรให้เหมาะกับเวอร์ชันและคนที่ต้องใช้ไฟล์ร่วมกัน
USEFUL TECHNIQUES
3 เทคนิค XLOOKUP ที่ช่วยงานจริงได้มากขึ้น
1) คืนหลายคอลัมน์จากสูตรเดียว
ถ้าต้องการดึงทั้งชื่อสินค้า ประเภท และราคา ไม่จำเป็นต้องเขียน XLOOKUP แยก 3 สูตร เราสามารถให้ return_array ครอบคลุมหลายคอลัมน์ได้
=XLOOKUP(B3,$H$3:$H$7,$I$3:$K$7,"ไม่พบรหัสสินค้า")
ผลลัพธ์จะกระจายออกไปยังเซลล์ข้างเคียง ดังนั้นพื้นที่ปลายทางต้องว่าง หากมีข้อมูลขวางอยู่ Excel อาจแสดง #SPILL!
2) ค้นหาข้อความบางส่วนด้วย Wildcard
กรณีต้องการค้นหาชื่อที่ “มีคำนี้อยู่ข้างใน” สามารถใช้ Wildcard ร่วมกับ match_mode = 2
=XLOOKUP("*"&B3&"*",$I$3:$I$7,$K$3:$K$7,"ไม่พบ",2)
ถ้าใน I3:I7 มีคำว่า Wireless Mouse สูตรจะสามารถจับคู่ด้วย Wildcard แล้วคืนราคาจาก K3:K7 ได้
3) ต้องการรายการล่าสุด? ค้นจากล่างขึ้นบน
ถ้ารหัสเดียวกันเกิดซ้ำหลายครั้ง เช่น ลูกค้าคนเดิมมีหลายรายการซื้อ เราสามารถใช้ search_mode = -1 เพื่อให้ XLOOKUP เริ่มค้นจากรายการสุดท้ายย้อนขึ้นมา
=XLOOKUP(B2,$H$3:$H$20,$J$3:$J$20,"ไม่พบ",0,-1)
match_mode และ search_mode มีประโยชน์มาก แต่ในงานทั่วไปควรเริ่มจาก Exact Match ก่อน แล้วค่อยเพิ่ม Argument เมื่อมีโจทย์ที่ต้องใช้จริง
WORKSHOP
Workshop: ดึงข้อมูลสินค้าเพื่อทำใบสั่งซื้อ
สมมติฝ่ายจัดซื้อได้รับรายการรหัสสินค้า แล้วต้องเติมชื่อสินค้า หมวดสินค้า และราคามาตรฐาน ก่อนนำไปตรวจสอบและส่งต่อ
| A | B | C | D | |
|---|---|---|---|---|
| 1 | Product ID | Product Name | Category | Price |
| 2 | P002 | Wireless Mouse | Accessory | 890 |
| 3 | P004 | Monitor 27" | Display | 7,990 |
| 4 | P005 | USB-C Hub | Accessory | 1,590 |
Master Data สมมติว่าอยู่ H3:K7 โดย H = Product ID, I = Product Name, J = Category, K = Price
-
กรอกรหัสสินค้าใน A2
เช่น P002 และ Copy รหัสรายการอื่นลงแถวถัดไป
-
ดึงชื่อสินค้าใน B2
ใช้ XLOOKUP ค้นหา A2 ใน Master Product ID แล้วคืนชื่อสินค้า
-
ดึง Category และ Price
เปลี่ยน return_array เป็นคอลัมน์ที่ต้องการ หรือใช้สูตรเดียวคืนหลายคอลัมน์ถ้ารูปแบบงานเหมาะสม
-
Copy สูตรลงรายการทั้งหมด
ตรวจสอบรหัสที่ขึ้น “ไม่พบรหัสสินค้า” ก่อนนำข้อมูลไปทำรายงานหรือสั่งซื้อ
=XLOOKUP(A2,$H$3:$H$7,$I$3:$I$7,"ไม่พบรหัสสินค้า")
=XLOOKUP(A2,$H$3:$H$7,$J$3:$J$7,"ไม่พบรหัสสินค้า")
=XLOOKUP(A2,$H$3:$H$7,$K$3:$K$7,"ไม่พบรหัสสินค้า")
COMMON MISTAKES
ข้อผิดพลาด XLOOKUP ที่พบบ่อย
| อาการ | สาเหตุที่ควรตรวจ | แนวทางแก้ |
|---|---|---|
| #N/A | ไม่มีค่าที่ตรงกัน หรือข้อมูลมีช่องว่าง/ตัวอักษรแฝง | ตรวจข้อมูลต้นทาง และใช้ if_not_found เมื่อเหมาะสม |
| #VALUE! / ผลลัพธ์ผิด | lookup_array กับ return_array มีขนาดไม่สอดคล้องกัน | ตรวจให้จำนวนแถว/คอลัมน์สัมพันธ์กัน |
| #SPILL! | สูตรคืนหลายค่าแต่เซลล์ปลายทางมีข้อมูลขวาง | เคลียร์พื้นที่ที่ผลลัพธ์ต้อง Spill |
| #NAME? | Excel เวอร์ชันที่ใช้อยู่ไม่รองรับ XLOOKUP หรือชื่อฟังก์ชันผิด | ตรวจเวอร์ชัน Excel และการสะกดสูตร |
| ค้นหาตัวเลขไม่เจอทั้งที่ดูเหมือนเหมือนกัน | ฝั่งหนึ่งเป็น Number แต่อีกฝั่งเป็น Text | ตรวจชนิดข้อมูลและทำให้สองฝั่งเป็นชนิดเดียวกัน |
หากองค์กรยังมีผู้ใช้ Excel 2016 หรือ Excel 2019 ไฟล์ที่ใช้ XLOOKUP อาจไม่สามารถคำนวณสูตรนี้ได้ตามปกติ จึงควรตรวจเวอร์ชันของผู้รับไฟล์ก่อนเลือกใช้สูตร
FAQ & SUMMARY
คำถามที่พบบ่อยเกี่ยวกับ XLOOKUP
XLOOKUP ดีกว่า VLOOKUP ทุกกรณีไหม?
ไม่จำเป็นครับ XLOOKUP ยืดหยุ่นและอ่านง่ายกว่าในหลายงาน แต่ถ้าไฟล์ต้องใช้กับ Excel 2016 หรือ 2019 VLOOKUP หรือ INDEX/MATCH ยังมีความสำคัญ
XLOOKUP ต้องใส่ FALSE เหมือน VLOOKUP หรือไม่?
งาน Exact Match ทั่วไปไม่ต้องใส่ เพราะ XLOOKUP ใช้ Exact Match เป็นค่าเริ่มต้นอยู่แล้ว
XLOOKUP สามารถค้นหาจากขวาไปซ้ายได้ไหม?
ได้ครับ เพียงกำหนด lookup_array เป็นช่วงที่ใช้ค้นหา และ return_array เป็นช่วงผลลัพธ์ ไม่ว่าช่วงผลลัพธ์จะอยู่ซ้ายหรือขวา
XLOOKUP คืนหลายคอลัมน์พร้อมกันได้ไหม?
ได้ครับ ถ้า return_array ครอบคลุมหลายคอลัมน์ ผลลัพธ์สามารถ Spill ออกไปหลายเซลล์ได้ โดยพื้นที่ปลายทางต้องไม่มีข้อมูลขวาง
Excel 2019 ใช้ XLOOKUP ได้ไหม?
Microsoft ระบุว่า XLOOKUP ไม่พร้อมใช้งานใน Excel 2016 และ Excel 2019 หากต้องรองรับเวอร์ชันเหล่านี้ควรใช้สูตรที่รองรับร่วมกัน
ถ้ามีข้อมูลซ้ำ XLOOKUP จะคืนรายการไหน?
โดยค่าเริ่มต้น XLOOKUP จะค้นจากรายการแรกไปท้าย จึงคืนค่าจากรายการตรงกันรายการแรก หากต้องการรายการล่าสุดสามารถใช้ search_mode = -1 เพื่อค้นจากท้ายขึ้นมา
สรุปจำง่าย
lookup_value → lookup_array → return_array คือแกนหลักที่ควรเข้าใจก่อน
XLOOKUP ใช้ Exact Match เป็นค่าเริ่มต้น เหมาะกับงานค้นหารหัสทั่วไป
if_not_found, match_mode และ search_mode ใช้เมื่อโจทย์งานต้องการจริง
อยากใช้สูตร Excel กับงานจริงให้คล่องขึ้น?
เรียนตั้งแต่การเลือกสูตร การสร้างเงื่อนไข ไปจนถึง Lookup และการจัดการข้อมูล พร้อม Workshop สำหรับคนทำงาน
อ้างอิงคุณสมบัติและ Syntax: Microsoft Support — XLOOKUP และ VLOOKUP