Skip to content

VLOOKUP & XLOOKUP

เชื่อมข้อมูลข้ามตาราง

Section titled “เชื่อมข้อมูลข้ามตาราง”

เมื่อข้อมูลอยู่คนละตาราง เราต้องใช้ Lookup Functions เพื่อดึงข้อมูลจากตารางหนึ่งมาใช้ในอีกตารางหนึ่ง — เหมือนกับ JOIN ใน SQL

VLOOKUP — ตัวคลาสสิก

Section titled “VLOOKUP — ตัวคลาสสิก”
=VLOOKUP(search_key, range, index, [is_sorted])
Parameterความหมาย
search_keyค่าที่ต้องการค้นหา
rangeตารางที่จะค้น (Column แรกต้องเป็น Key)
indexColumn ที่ต้องการดึงค่า (นับจาก 1)
is_sortedFALSE = Exact Match, TRUE = Approximate

สมมติมี 2 ตาราง:

ตารางคำสั่งซื้อ (Orders):

Order IDProduct IDQty
001P1015
002P2033

ตารางสินค้า (Products):

Product IDNamePrice
P101Widget A500
P203Gadget B1200
=VLOOKUP(B2, Products!A:C, 2, FALSE)
→ ค้นหา Product ID ในตาราง Products → ดึง Name (Column 2)
=VLOOKUP(B2, Products!A:C, 3, FALSE) * C2
→ ดึง Price × Qty = ยอดรวม

XLOOKUP — ตัวใหม่ที่ดีกว่า

Section titled “XLOOKUP — ตัวใหม่ที่ดีกว่า”

XLOOKUP แก้ปัญหาทุกข้อของ VLOOKUP:

=XLOOKUP(search_key, lookup_range, result_range, [not_found], [match_mode], [search_mode])
VLOOKUPXLOOKUP
ค้นได้แค่ซ้ายไปขวาค้นได้ทุกทิศทาง
ใช้ Column Index (ตัวเลข)ระบุ Range ผลลัพธ์ตรง ๆ
Default = Approximate MatchDefault = Exact Match
ไม่มี Not Found handlerมี parameter สำหรับ Not Found
=XLOOKUP(B2, Products!A:A, Products!B:B)
→ ค้น Product ID → ดึง Name (ระบุ Column ตรง ๆ)
=XLOOKUP(B2, Products!A:A, Products!B:C)
→ ดึงหลาย Column พร้อมกัน (Name + Price)
=XLOOKUP(B2, Products!A:A, Products!B:B, "ไม่พบสินค้า")
→ ถ้าค้นไม่เจอ แสดง "ไม่พบสินค้า" แทน Error
=XLOOKUP(B2, Products!B:B, Products!A:A)
→ ค้นจาก Name → ดึง Product ID (ขวาไปซ้าย — VLOOKUP ทำไม่ได้!)

เปรียบเทียบสูตรเดียวกัน

Section titled “เปรียบเทียบสูตรเดียวกัน”
VLOOKUP: =VLOOKUP(B2, Products!A:C, 2, FALSE)
XLOOKUP: =XLOOKUP(B2, Products!A:A, Products!B:B)

ทั้งคู่ให้ผลเหมือนกัน แต่ XLOOKUP อ่านเข้าใจง่ายกว่า และไม่พังเมื่อเพิ่ม Column

ปัญหาสาเหตุวิธีแก้
#N/A Errorค้นไม่เจอ หรือข้อมูลมี Space ซ่อนใช้ TRIM() กับข้อมูล / XLOOKUP มี not_found
ได้ค่าผิดลืมใส่ FALSE (Exact Match)ใส่ FALSE ใน VLOOKUP เสมอ
สูตรพังเมื่อเพิ่ม ColumnColumn Index เลื่อนเปลี่ยนเป็น XLOOKUP
ค้นขวาไปซ้ายไม่ได้ข้อจำกัดของ VLOOKUPใช้ XLOOKUP หรือ INDEX+MATCH
  • VLOOKUP — ใช้งานง่าย แต่มีข้อจำกัด (ค้นซ้ายไปขวาเท่านั้น, ใช้ Column Index)
  • XLOOKUP — แนะนำสำหรับงานใหม่ (ค้นได้ทุกทิศ, syntax ชัดเจน, มี not_found)
  • ใส่ FALSE เสมอ ใน VLOOKUP เพื่อ Exact Match
  • Lookup = JOIN ใน SQL — แนวคิดเดียวกัน ต่างแค่ syntax