← กลับหน้ารวมบทความ
EXCEL LOOKUP FORMULA

XLOOKUP Excel ใช้อย่างไร? พร้อมตัวอย่างแทน VLOOKUP สำหรับงานจริง

ต้องดึงชื่อสินค้า ราคา แผนก หรือข้อมูลจากอีกตารางหนึ่ง? XLOOKUP ช่วยให้สูตร Lookup อ่านง่ายขึ้น ค้นหาได้ทั้งซ้ายและขวา และกำหนดข้อความเมื่อหาไม่เจอได้ในสูตรเดียว บทความนี้พาทำตั้งแต่พื้นฐานจนถึงตัวอย่างที่ใช้กับงานจริงครับ

เหมาะกับ: คนทำงาน Excel หัวข้อ: XLOOKUP · VLOOKUP · Lookup ระดับ: พื้นฐาน → ใช้งานจริง
Exact Match เป็นค่าเริ่มต้น งานค้นหารหัสทั่วไปไม่ต้องใส่ FALSE เหมือน VLOOKUP
ค้นหาได้ทั้งซ้ายและขวา แยกช่วงที่ใช้ค้นหาและช่วงผลลัพธ์ออกจากกัน
กำหนดกรณีหาไม่เจอได้เลย ใช้ if_not_found แทนการซ้อน IFERROR ในหลายกรณี

START HERE

XLOOKUP คืออะไร? ทำไมคนใช้ Excel ควรรู้จัก

XLOOKUP เป็นฟังก์ชันสำหรับค้นหาค่าในช่วงข้อมูลหนึ่ง แล้วคืนค่าที่อยู่ในแถวเดียวกันจากอีกช่วงหนึ่ง งานที่พบได้บ่อย เช่น ค้นหารหัสสินค้าแล้วดึงชื่อสินค้า ค้นหารหัสพนักงานแล้วดึงแผนก หรือค้นหารหัสลูกค้าแล้วดึงเครดิตเทอม

จุดที่ทำให้ XLOOKUP ใช้ง่ายกว่า VLOOKUP ในหลายสถานการณ์คือ เราระบุ ช่วงที่ค้นหา และ ช่วงที่ต้องการคืนค่า แยกกัน จึงไม่ต้องนับว่า “ค่าที่ต้องการอยู่คอลัมน์ที่เท่าไรของตาราง” และยังคืนค่าจากคอลัมน์ด้านซ้ายของคอลัมน์ค้นหาได้ด้วย

จำแนวคิดนี้ให้ได้ก่อน

XLOOKUP = “หาค่านี้ในช่วงไหน” + “ถ้าเจอแล้วให้คืนค่าจากช่วงไหน” เมื่อเข้าใจสองคำถามนี้ สูตรจะอ่านง่ายขึ้นมากครับ

XLOOKUP เหมาะกับงานแบบไหน?

Sales / Purchasing

ดึงชื่อสินค้า ราคา กลุ่มสินค้า หรือ Supplier จากรหัสที่กรอกไว้

HR / Admin

ค้นหารหัสพนักงานแล้วคืนชื่อ แผนก ตำแหน่ง หรือข้อมูลที่เกี่ยวข้อง

Finance / Accounting

ดึง Account, Cost Center, เครดิตเทอม หรือข้อมูลอ้างอิงจาก Master Data

FORMULA STRUCTURE

โครงสร้างสูตร XLOOKUP

Syntax
=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 กำหนดทิศทางหรือวิธีค้นหา เช่น ค้นจากท้ายขึ้นหน้า ไม่จำเป็น
จุดที่ช่วยลดความผิดพลาด XLOOKUP ใช้ Exact Match เป็นค่าเริ่มต้น ดังนั้นงานค้นหารหัสทั่วไปไม่ต้องใส่ FALSE เพื่อบังคับ Exact Match เหมือน VLOOKUP

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 ว่าต้องการให้แสดงอะไรแทนได้เลย

กำหนด if_not_found
=XLOOKUP(B3,$H$3:$H$7,$I$3:$I$7,"ไม่พบรหัสสินค้า")
ข้อดีในงานจริง

เราไม่จำเป็นต้องซ้อน IFERROR เพียงเพื่อเปลี่ยนข้อความ กรณี “ค้นหาไม่พบ” เพราะ XLOOKUP มี if_not_found สำหรับกรณีนี้โดยตรง

แยกให้ออกระหว่าง “หาไม่เจอ” กับ “ข้อมูลต้นทางมี Error”

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
=XLOOKUP(B3,$H$3:$H$7,$I$3:$I$7,"ไม่พบ")
VLOOKUP
=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 ครอบคลุมหลายคอลัมน์ได้

คืน 3 คอลัมน์: ชื่อสินค้า + ประเภท + ราคา
=XLOOKUP(B3,$H$3:$H$7,$I$3:$K$7,"ไม่พบรหัสสินค้า")

ผลลัพธ์จะกระจายออกไปยังเซลล์ข้างเคียง ดังนั้นพื้นที่ปลายทางต้องว่าง หากมีข้อมูลขวางอยู่ Excel อาจแสดง #SPILL!

2) ค้นหาข้อความบางส่วนด้วย Wildcard

กรณีต้องการค้นหาชื่อที่ “มีคำนี้อยู่ข้างใน” สามารถใช้ Wildcard ร่วมกับ match_mode = 2

ตัวอย่าง B3 = Mouse
=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)
อย่าใช้ Advanced Argument โดยไม่เข้าใจข้อมูล

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

  1. กรอกรหัสสินค้าใน A2

    เช่น P002 และ Copy รหัสรายการอื่นลงแถวถัดไป

  2. ดึงชื่อสินค้าใน B2

    ใช้ XLOOKUP ค้นหา A2 ใน Master Product ID แล้วคืนชื่อสินค้า

  3. ดึง Category และ Price

    เปลี่ยน return_array เป็นคอลัมน์ที่ต้องการ หรือใช้สูตรเดียวคืนหลายคอลัมน์ถ้ารูปแบบงานเหมาะสม

  4. Copy สูตรลงรายการทั้งหมด

    ตรวจสอบรหัสที่ขึ้น “ไม่พบรหัสสินค้า” ก่อนนำข้อมูลไปทำรายงานหรือสั่งซื้อ

B2 — Product Name
=XLOOKUP(A2,$H$3:$H$7,$I$3:$I$7,"ไม่พบรหัสสินค้า")
C2 — Category
=XLOOKUP(A2,$H$3:$H$7,$J$3:$J$7,"ไม่พบรหัสสินค้า")
D2 — Price
=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 ตรวจชนิดข้อมูลและทำให้สองฝั่งเป็นชนิดเดียวกัน
เรื่อง Version ต้องเช็กก่อนส่งไฟล์ให้คนอื่น

หากองค์กรยังมีผู้ใช้ 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 เพื่อค้นจากท้ายขึ้นมา

สรุปจำง่าย

เริ่มจาก 3 Argument

lookup_value → lookup_array → return_array คือแกนหลักที่ควรเข้าใจก่อน

Exact Match ง่ายขึ้น

XLOOKUP ใช้ Exact Match เป็นค่าเริ่มต้น เหมาะกับงานค้นหารหัสทั่วไป

ค่อยเพิ่ม Argument ขั้นสูง

if_not_found, match_mode และ search_mode ใช้เมื่อโจทย์งานต้องการจริง

อยากใช้สูตร Excel กับงานจริงให้คล่องขึ้น?

เรียนตั้งแต่การเลือกสูตร การสร้างเงื่อนไข ไปจนถึง Lookup และการจัดการข้อมูล พร้อม Workshop สำหรับคนทำงาน

ดูคอร์ส Excel สูตร & ฟังก์ชัน →

อ้างอิงคุณสมบัติและ Syntax: Microsoft Support — XLOOKUP และ VLOOKUP