
VLOOKUP เป็นหนึ่งในฟังก์ชันของ Excel ที่มีการใช้งานมากที่สุดตลอดกาล ไม่ว่าคุณจะกำลังจับคู่รหัสลูกค้ากับชื่อ ดึงราคาสินค้าจากแคตตาล็อก หรือรวมข้อมูลจากสองแผ่นงานเข้าด้วยกัน VLOOKUP สามารถจัดการได้จบในสูตรเดียว คู่มือนี้ครอบคลุมทุกสิ่งที่คุณจำเป็นต้องรู้ ตั้งแต่ไวยากรณ์ ตัวอย่างการใช้งานจริง ข้อผิดพลาดที่พบบ่อย และเมื่อใดที่คุณควรเปลี่ยนไปใช้ฟังก์ชันอื่นแทน
VLOOKUP ย่อมาจาก Vertical Lookup (การค้นหาในแนวตั้ง) โดยจะค้นหาค่าใน คอลัมน์แรก ของช่วงข้อมูลที่กำหนด จากนั้นจะส่งคืนค่าจากคอลัมน์ที่ระบุซึ่งอยู่ในแถวเดียวกัน ลองนึกภาพว่ามันคือการค้นหาข้อมูลที่แม่นยำ: คุณให้คีย์ข้อมูลกับ Excel บอกให้มันไปหาในที่ที่กำหนด แล้วให้มันดึงข้อมูลอื่นที่อยู่ในรายการ (Record) เดียวกันกลับมา
ตัวอย่างการใช้งานจริงที่พบบ่อย ได้แก่:
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
อาร์กิวเมนต์ (Argument) แต่ละตัวมีหน้าที่เฉพาะเจาะจง ดังนี้:
| อาร์กิวเมนต์ | จำเป็นหรือไม่? | ความหมาย |
|---|---|---|
| lookup_value | จำเป็น | ค่าที่คุณต้องการค้นหา อาจเป็นเซลล์อ้างอิง ตัวเลข หรือข้อความ |
| table_array | จำเป็น | ช่วงของเซลล์ที่เก็บข้อมูลของคุณ คอลัมน์ที่ใช้ค้นหาต้องอยู่ซ้ายสุดของช่วงข้อมูลนี้เสมอ |
| col_index_num | จำเป็น | หมายเลขคอลัมน์ (นับจากด้านซ้ายของ table_array) ที่มีค่าที่คุณต้องการส่งคืนกลับมา |
| range_lookup | ไม่จำเป็น | ใช้ FALSE (หรือ 0) สำหรับการค้นหาแบบตรงกันทุกประการ; ใช้ TRUE (หรือ 1) สำหรับการค้นหาแบบใกล้เคียง หากละเว้นไว้ ค่าเริ่มต้นจะเป็น TRUE |
สิ่งสำคัญ: แนะนำให้ใช้ FALSE ในอาร์กิวเมนต์ตัวที่สี่เสมอ เว้นแต่คุณกำลังทำงานกับตารางที่จัดเรียงลำดับไว้แล้วและจำเป็นต้องค้นหาแบบค่าใกล้เคียงจริงๆ (เช่น ตารางเกรด หรือฐานภาษี) การละเว้นหรือการใช้ TRUE กับข้อมูลที่ไม่ได้เรียงลำดับเป็นสาเหตุหลักที่ทำให้ได้ผลลัพธ์ที่ไม่ถูกต้อง
สมมติว่าคุณจัดการแคตตาล็อกสินค้าขนาดเล็กใน Sheet1 และคุณต้องการดึงราคาสินค้ามาใส่ในใบสั่งซื้อใน Sheet2 นี่คือลักษณะข้อมูลใน Sheet1:
| A — SKU | B — ชื่อสินค้า | C — ราคา |
|---|---|---|
| P001 | Wireless Mouse | $29.99 |
| P002 | USB-C Hub | $49.99 |
| P003 | Mechanical Keyboard | $89.99 |
| P004 | Monitor Stand | $34.99 |
ใน Sheet2 สมมติว่าคอลัมน์ A มีรหัส SKU ที่ผู้ใช้กรอกเข้ามา หากต้องการดึงชื่อสินค้ามาแสดงในคอลัมน์ B ของ Sheet2 ให้พิมพ์:
=VLOOKUP(A2, Sheet1!$A$2:$C$5, 2, FALSE)
และหากต้องการดึงราคามาแสดงในคอลัมน์ C ของ Sheet2 ให้เปลี่ยนหมายเลขคอลัมน์เป็น 3:
=VLOOKUP(A2, Sheet1!$A$2:$C$5, 3, FALSE)
สังเกตเครื่องหมายดอลลาร์ใน Sheet1!$A$2:$C$5 เครื่องหมายเหล่านี้ทำหน้าที่ล็อกช่วงข้อมูล เพื่อที่เวลาคุณคัดลอกสูตรลงไปยังแถวอื่นๆ ช่วง table_array จะไม่เลื่อนตาม หากคุณยังไม่คุ้นเคยกับการทำงานของการอ้างอิงเซลล์ สามารถอ่านรายละเอียดฉบับเต็มได้ในบทความ อธิบายการอ้างอิงเซลล์ใน Excel: แบบสัมพัทธ์และแบบสัมบูรณ์
คุณสามารถตั้งค่าอาร์กิวเมนต์ที่สี่เป็น TRUE เมื่อตารางค้นหาของคุณมีการเรียงลำดับจากน้อยไปมาก และคุณต้องการค่าที่ใกล้เคียงที่สุดที่น้อยกว่าค่าที่ค้นหา ตัวอย่างคลาสสิกคือการแปลงคะแนนดิบเป็นเกรดตัวอักษร:
=VLOOKUP(B2, $E$2:$F$6, 2, TRUE)
| E — คะแนนขั้นต่ำ | F — เกรด |
|---|---|
| 0 | F |
| 60 | D |
| 70 | C |
| 80 | B |
| 90 | A |
คะแนน 85 จะจับคู่กับแถว 80 และส่งคืนค่าเป็น "B" ซึ่งการทำงานแบบนี้จะถูกต้องก็ต่อเมื่อคอลัมน์คะแนนขั้นต่ำจัดเรียงลำดับจากน้อยไปมากเท่านั้น
นี่เป็นข้อผิดพลาดที่พบได้บ่อยที่สุด ซึ่งหมายความว่า VLOOKUP ไม่พบ lookup_value ในคอลัมน์แรกของตารางข้อมูลของคุณ ให้ลองตรวจสอบหาสาเหตุเหล่านี้:
หากต้องการซ่อนข้อผิดพลาดในขณะแก้ไข ให้ครอบสูตรด้วยฟังก์ชัน IFERROR ดังนี้: =IFERROR(VLOOKUP(A2, $D$2:$F$10, 2, FALSE), "Not found")
ข้อผิดพลาดนี้จะปรากฏขึ้นเมื่อ col_index_num มีค่ามากกว่าจำนวนคอลัมน์ที่มีอยู่ใน table_array ของคุณ ตัวอย่างเช่น คุณระบุหมายเลขคอลัมน์เป็น 5 แต่ช่วงข้อมูลกว้างเพียง 3 คอลัมน์ ให้ลองนับจำนวนคอลัมน์ของคุณใหม่แล้วปรับลดตัวเลขให้ถูกต้อง
มักเกิดจาก col_index_num เป็นศูนย์หรือเป็นค่าที่ไม่ใช่ตัวเลข หมายเลขคอลัมน์จะต้องเป็นจำนวนเต็มบวกที่มีค่าตั้งแต่ 1 ขึ้นไป
หากคุณละเว้นอาร์กิวเมนต์ตัวที่สี่ (หรือตั้งค่าเป็น TRUE) แต่ตารางของคุณไม่ได้จัดเรียงลำดับ VLOOKUP อาจส่งคืนผลลัพธ์แบบใกล้เคียงที่ผิดพลาดมาแบบเงียบๆ โดยไม่มีข้อความแจ้งเตือนข้อผิดพลาดใดๆ ดังนั้นควรใช้ FALSE เสมอเพื่อให้ค้นหาข้อมูลแบบตรงกันทุกประการ
คุณสามารถใช้ VLOOKUP ร่วมกับฟังก์ชันตรรกะเพื่อให้ได้ผลลัพธ์ที่ยืดหยุ่นมากขึ้นได้ ตัวอย่างเช่น การแสดงส่วนลดเฉพาะกรณีที่ค้นหาข้อมูลเจอก็ต่อเมื่อ:
=IF(IFERROR(VLOOKUP(A2, $D$2:$F$10, 3, FALSE), "") = "", "No discount", VLOOKUP(A2, $D$2:$F$10, 3, FALSE))
หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการสร้างเงื่อนไขตรรกะในสูตร สามารถดูคู่มือฉบับสมบูรณ์ได้ที่ ฟังก์ชัน IF: การทดสอบตรรกะและ IF แบบซ้อนกัน
คุณสามารถอ้างอิงข้อมูลจากแผ่นงานอื่นได้โดยใส่ชื่อแผ่นงานไว้หน้าช่วงข้อมูล:
=VLOOKUP(A2, Catalog!$A$2:$C$100, 2, FALSE)
หากต้องการอ้างอิงจากสมุดงานอื่น (ในขณะที่เปิดไฟล์นั้นอยู่):
=VLOOKUP(A2, [PriceList.xlsx]Sheet1!$A$2:$C$100, 2, FALSE)
ถ้าสมุดงานถูกปิดไปแล้ว Excel จะแสดงเส้นทางไฟล์เต็มโดยอัตโนมัติเมื่อคุณเคยลิงก์ไปยังไฟล์นั้นในขณะที่เปิดทั้งสองไฟล์อยู่
การใช้ INDEX คู่กับ MATCH จะช่วยกำจัดข้อจำกัดเรื่องการค้นหาด้วยคอลัมน์ซ้ายสุด และมีความเสถียรมากกว่าเมื่อมีการเพิ่มหรือสลับคอลัมน์ หากคุณพบว่าข้อจำกัดของ VLOOKUP ทำให้คุณทำงานยากขึ้น เรามีบทความแนะนำในเรื่อง INDEX MATCH: วิธีค้นหาข้อมูลที่เหนือกว่า ที่จะช่วยแนะนำการเปลี่ยนผ่านทีละขั้นตอน
ฟังก์ชันนี้มีให้ใช้งานใน Excel 365 และ Excel 2021 โดย XLOOKUP จะใช้งานง่ายกว่าและมีประสิทธิภาพมากกว่า:
=XLOOKUP(A2, Sheet1!$A$2:$A$5, Sheet1!$C$2:$C$5, "Not found")
มันสามารถค้นหาในทิศทางใดก็ได้ จัดการกับค่าที่สูญหายได้ในตัว และไม่จำเป็นต้องระบุหมายเลขคอลัมน์เป็นตัวเลข หากเวอร์ชัน Excel ของคุณรองรับฟังก์ชันนี้ ขอแนะนำให้พิจารณาใช้ XLOOKUP สำหรับงานใหม่ๆ ทั้งหมด
VLOOKUP เข้ากันได้ดีกับเวิร์กโฟลว์ของ Excel หลายๆ รูปแบบ ตัวอย่างเช่น แดชบอร์ดการขายที่ติดตาม KPI และประสิทธิภาพการทำงาน มักใช้ VLOOKUP เพื่อดึงชื่อสินค้าหรือเขตพื้นที่การขายของพนักงานจากตารางอ้างอิงมาไว้ในรายงานสรุปผล เช่นเดียวกับการสร้าง เทมเพลตใบแจ้งหนี้เพื่อการเรียกเก็บเงินอย่างมืออาชีพ ที่แทบจะต้องใช้ VLOOKUP เสมอเพื่อดึงราคาต่อหน่วยจากรายการสินค้าโดยอ้างอิงจากรหัสสินค้าที่ผู้ใช้กรอก
สำหรับทีมที่ทำงานกับชุดข้อมูลขนาดใหญ่ การใช้ VLOOKUP ร่วมกับ Pivot Table เป็นวิธีการทำงานที่มีประสิทธิภาพมาก: เพียงใช้ VLOOKUP ในการเพิ่มป้ายกำกับหมวดหมู่ลงในข้อมูลดิบ แล้วสรุปผลใน Pivot Table
หากคุณรู้ว่าตัวเองต้องการอะไรแต่จำไวยากรณ์ที่แน่นอนไม่ได้ — ตัวอย่างเช่น "ค้นหารหัสพนักงานในคอลัมน์ A ของแผ่นงาน HR แล้วให้ดึงเงินเดือนจากคอลัมน์ D กลับมา" — GPTExcel จะช่วยให้คุณสามารถอธิบายสิ่งที่คุณต้องการด้วยภาษาทั่วไป และสร้างสูตร VLOOKUP ที่ถูกต้องให้ในพริบตา พร้อมนำไปวางในสเปรดชีตของคุณได้ทันที
สาเหตุที่เป็นไปได้มากที่สุดคือชนิดข้อมูลไม่สอดคล้องกันหรือมีช่องว่างส่วนเกินในบางเซลล์ ลองใช้ =TRIM(A2) กับค่าที่ใช้ค้นหาของคุณ และตรวจสอบให้แน่ใจว่าข้อมูลทั้งหมดในคอลัมน์ที่ใช้ค้นหานั้นถูกจัดเก็บเป็นชนิดข้อมูลเดียวกัน (เป็นข้อความทั้งหมดหรือตัวเลขทั้งหมด) นอกจากนี้คุณยังสามารถใช้ =IFERROR(VLOOKUP(...), "Check data") เพื่อระบุว่าแถวใดทำงานผิดพลาดโดยไม่ทำให้รายงานที่เหลือเสียกระบวน
ในรูปแบบการใช้งานแบบดั้งเดิมนั้นไม่สามารถทำได้ในสูตรเดียว คุณจำเป็นต้องสร้าง VLOOKUP แยกสำหรับแต่ละคอลัมน์ที่คุณต้องการดึงค่า โดยเปลี่ยนแค่ค่า col_index_num อีกทางเลือกหนึ่งคือการใช้ XLOOKUP ใน Excel 365 ซึ่งสามารถส่งคืนผลลัพธ์แบบทั้งแถวได้ในสูตรเดียว โดยการระบุอาเรย์ผลลัพธ์เป็นแบบหลายคอลัมน์
VLOOKUP จะส่งคืนค่าที่ตรงกับการค้นหา รายการแรก ที่พบเจอเสมอ โดยไล่หาจากบนลงล่าง หากในคอลัมน์ค้นหาของคุณมีข้อมูลซ้ำกัน การจับคู่ที่พบหลังจากนั้นจะถูกเพิกเฉย สำหรับกรณีที่จำเป็นต้องจัดการกับข้อมูลที่ซ้ำกัน ขอแนะนำให้ใช้ Pivot Table หรือเพิ่มคอลัมน์ตัวช่วยเพื่อจัดการข้อมูลซ้ำก่อนทำการค้นหา
ไม่ VLOOKUP มองตัวอักษรพิมพ์ใหญ่และพิมพ์เล็กว่าเหมือนกัน การค้นหาคำว่า "apple" จะตรงกับ "Apple" หรือ "APPLE" ด้วย หากคุณต้องการค้นหาแบบแยกความแตกต่างตัวพิมพ์เล็กตัวพิมพ์ใหญ่ (Case-sensitive) คุณจะต้องใช้สูตรอาร์เรย์ที่ผสานระหว่าง EXACT() และ INDEX/MATCH แทน
เรียนรู้วิธีใช้ฟังก์ชัน TEXT ใน Excel เพื่อแปลงตัวเลข วันที่ และเวลาเป็นสตริงข้อความที่จัดรูปแบบแล้วด้วยรหัสรูปแบบ (Format codes) พร้อมตัวอย่างจริงและการใช้งานในชีวิตประจำวัน
เรียนรู้วิธีการทำงานของฟังก์ชัน IF ใน Excel การซ้อนฟังก์ชัน IF หลายชั้น และเมื่อใดควรใช้ฟังก์ชันทางเลือกใหม่ๆ อย่าง IFS และ SWITCH เพื่อให้สูตรอ่านง่ายและเป็นระเบียบยิ่งขึ้น
เรียนรู้ SUMIF และ SUMIFS ใน Excel เพื่อรวมค่าตามเงื่อนไขเดียวหรือหลายเงื่อนไข พร้อมไวยากรณ์จริง ตัวอย่างที่ใช้ได้จริง และคำแนะนำทีละขั้นตอน