Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.
ปัญหา VLOOKUP ส่วนใหญ่เกิดจาก 3 กลุ่ม: ช่วงอ้างอิงหรือเลขคอลัมน์ผิด, เลือกโหมดค้นหาไม่ถูกต้อง และข้อมูลต้นทางไม่ตรงกันจริง แม้จะดูเหมือนเหมือนกันก็ตาม สำหรับการค้นหารหัสสินค้า รหัสพนักงาน หรือเลขเอกสาร ให้เริ่มจากสูตรแบบตรงกันนี้:
=VLOOKUP(A2,$F$2:$G$100,2,FALSE)
จากนั้นตรวจตามลำดับในบทความนี้ก่อนใช้ IFERROR เพราะการดักข้อผิดพลาดเพียงเปลี่ยนข้อความที่แสดง และอาจซ่อนสาเหตุจริงไว้
VLOOKUP ทำงานอย่างไร
ไวยากรณ์ของฟังก์ชันคือ:
PC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware match=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
lookup_valueคือค่าที่ต้องการค้นหาtable_arrayคือช่วงข้อมูล โดยคอลัมน์ซ้ายสุดต้องเป็นคอลัมน์ค้นหาcol_index_numคือลำดับคอลัมน์ผลลัพธ์ โดยนับซ้ายสุดของช่วงเป็น 1range_lookupคือโหมดค้นหา:FALSEหรือ0สำหรับค่าที่ตรงกัน และTRUEหรือ1สำหรับค่าใกล้เคียง
ตัวอย่างตาราง:
| รหัสสินค้า | ชื่อสินค้า | ราคา |
|---|---|---|
| P001 | Keyboard | 890 |
| P002 | Mouse | 450 |
=VLOOKUP("P002",A2:C3,2,FALSE)
ผลลัพธ์คือ Mouse ส่วนสูตรที่ใช้เลขคอลัมน์ 3 จะคืนค่า 450 จำไว้ว่าคอลัมน์ A ในช่วง A2:C3 คือ 1, B คือ 2 และ C คือ 3 หากเปลี่ยนช่วงเป็น B2:D3 ต้องนับเลขคอลัมน์ใหม่ ฟังก์ชันจะคืนค่าจากรายการแรกที่ตรงกันเท่านั้น ดูรายละเอียดไวยากรณ์ได้จาก Microsoft Support: VLOOKUP
#1 Best Overall
เช็กลิสต์ตรวจสูตรก่อนแก้ข้อผิดพลาด
- ค่าที่ค้นหามีอยู่จริงหรือไม่
- ค่าค้นหาอยู่ในคอลัมน์ซ้ายสุดของ
table_arrayหรือไม่ - ใช้
FALSEหรือTRUEเหมาะกับงานหรือไม่ - หากใช้
TRUEคอลัมน์แรกเรียงจากน้อยไปมากหรือไม่ - เลข
col_index_numไม่เกินจำนวนคอลัมน์ในช่วงหรือไม่ - ช่วงอ้างอิงถูกล็อกด้วย
$หรือไม่ - ค่าหนึ่งเป็นตัวเลข แต่อีกค่าหนึ่งเป็นข้อความหรือไม่
- มีช่องว่าง อักขระพิเศษ หรือวันที่ที่เก็บคนละรูปแบบหรือไม่
- ชื่อชีต ช่วงข้อมูล และเครื่องหมายคำพูดถูกต้องหรือไม่
- สูตรถูกบันทึกเป็นข้อความ หรือมีวงเล็บและตัวคั่นผิดหรือไม่
แก้ #N/A: ไม่พบค่าที่ตรงกัน
#N/A หมายถึง Excel ไม่พบค่าที่ตรงกัน แต่ไม่ได้แปลว่าข้อมูลไม่มีอยู่เสมอไป สาเหตุอาจเป็นช่องว่าง ชนิดข้อมูล หรือรูปแบบวันที่ที่ต่างกัน
ตรวจว่ามีค่าต้นทางหรือไม่
=COUNTIF($F$2:$F$100,A2)
ถ้าได้ 0 ให้ตรวจค่าต้นทางและค่าค้นหา หากได้มากกว่า 0 แต่ VLOOKUP ยังขึ้น #N/A ให้ตรวจชนิดข้อมูลและอักขระแฝง
ลบช่องว่างและอักขระที่มองไม่เห็น
=TRIM(A2)
หากข้อมูลมาจากเว็บหรือระบบภายนอก อาจมี non-breaking space:
=TRIM(CLEAN(SUBSTITUTE(A2,CHAR(160)," ")))
เมื่อข้อมูลต้นทางก็มีช่องว่างแฝง ควรสร้างคอลัมน์ช่วยเพื่อทำความสะอาดทั้งสองฝั่ง แล้วใช้คอลัมน์ที่แก้ไขแล้วเป็นคอลัมน์ค้นหา
แก้ตัวเลขกับข้อความ
ค่า 12345 ที่เป็นตัวเลขอาจไม่ตรงกับค่า "12345" ที่เก็บเป็นข้อความ ตรวจด้วย:
=ISNUMBER(A2)
=ISTEXT(A2)
หากทั้งสองฝั่งควรเป็นตัวเลข ใช้:
=VLOOKUP(VALUE(A2),$F$2:$G$100,2,FALSE)
หรือ:
=VLOOKUP(--A2,$F$2:$G$100,2,FALSE)
หากต้นทางเป็นข้อความทั้งหมด อาจแปลงค่าค้นหาเป็นข้อความด้วย A2&"" แทน อย่าใช้ VALUE() กับรหัสที่มีตัวอักษร เช่น P001 และระวังรหัสศูนย์นำหน้า เช่น 00123 กับ 123 อาจเป็นคนละค่า
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
ตรวจวันที่
วันที่หนึ่งอาจเป็นเลขลำดับของ Excel แต่อีกเซลล์เป็นข้อความ เช่น "18/08/2026" ตรวจด้วย ISNUMBER() และแปลงด้วย DATEVALUE() เมื่อแน่ใจว่ารูปแบบวันที่ตรงกับการตั้งค่าภูมิภาคของ Excel
แสดงข้อความเมื่อไม่พบข้อมูล
=IFNA(VLOOKUP(A2,$F$2:$G$100,2,FALSE),"ไม่พบรหัส")
ใช้ IFNA เมื่ออยากดักเฉพาะกรณีไม่พบข้อมูล ส่วน IFERROR ดักข้อผิดพลาดหลายชนิด:
Rank #2
=IFERROR(VLOOKUP(A2,$F$2:$G$100,2,FALSE),"ตรวจสอบข้อมูล")
ควรตรวจสูตรให้ถูกต้องก่อน เพราะ IFERROR อาจปิดบังปัญหาอย่างช่วงอ้างอิงผิดหรือเลขคอลัมน์ผิด ดูแนวทางเพิ่มเติมจาก Microsoft: วิธีแก้ #N/A
ได้ค่าผิดทั้งที่ไม่มีข้อผิดพลาด
ไม่ได้ใส่ FALSE
สูตรนี้:
=VLOOKUP(A2,$F$2:$G$100,2)
เทียบเท่ากับการใช้การค้นหาแบบใกล้เคียง เพราะค่าเริ่มต้นของอาร์กิวเมนต์ตัวที่สี่คือ TRUE สำหรับรหัส ชื่อ และเลขเอกสาร ให้เขียน FALSE ชัดเจนเสมอ:
=VLOOKUP(A2,$F$2:$G$100,2,FALSE)
ใช้ TRUE กับข้อมูลที่ไม่เรียง
TRUE ไม่ได้ผิดเสมอไป แต่เหมาะกับตารางแบบช่วง และคอลัมน์แรกต้องเรียงจากน้อยไปมาก เช่น:
| คะแนนเริ่มต้น | เกรด |
|---|---|
| 0 | F |
| 50 | C |
| 60 | B |
| 80 | A |
=VLOOKUP(B2,$F$2:$G$5,2,TRUE)
อย่าใช้วิธีนี้กับรหัสที่ต้องตรงกัน และอย่าใช้กับช่วงที่ไม่ได้เรียงลำดับ เพราะอาจได้ค่าผิดโดยไม่แสดง error
แก้ #REF!: เลขคอลัมน์เกินช่วง
ช่วง F:G มี 2 คอลัมน์ ดังนั้นสูตรนี้ผิด:
=VLOOKUP(A2,F2:G100,3,FALSE)
แก้เป็น:
=VLOOKUP(A2,F2:G100,2,FALSE)
หรือขยายช่วง:
=VLOOKUP(A2,F2:H100,3,FALSE)
เลขคอลัมน์นับจากซ้ายสุดของช่วง ไม่ใช่หมายเลขคอลัมน์บนแผ่นงาน เช่นใน D2:H100 คอลัมน์ D คือ 1, E คือ 2 และ F คือ 3
แก้ #VALUE!
สาเหตุที่พบบ่อยคือ col_index_num เป็น 0 หรือน้อยกว่า 1, อาร์กิวเมนต์ไม่ถูกชนิด หรือค่าค้นหายาวเกินข้อจำกัด 255 อักขระของ VLOOKUP ตรวจความยาวด้วย:
=LEN(A2)
ตัวอย่างที่ผิด:
=VLOOKUP(A2,F2:G100,0,FALSE)
หากค่าค้นหายาวมาก หรือจำเป็นต้องค้นหาจากขวาไปซ้าย ให้ใช้ INDEX/MATCH:
=INDEX($G$2:$G$100,MATCH(A2,$F$2:$F$100,0))
อ่านรายละเอียดข้อจำกัดได้จาก Microsoft: วิธีแก้ #VALUE! ใน VLOOKUP
Rank #3
แก้ #NAME?
ข้อผิดพลาดนี้หมายถึง Excel ไม่รู้จักชื่อบางส่วนในสูตร สาเหตุเช่น พิมพ์ชื่อฟังก์ชันผิด ใช้ชื่อช่วงที่ไม่มีอยู่ หรือใส่ข้อความโดยไม่มีเครื่องหมายคำพูด
Free tools Windows power users keep installed
One-click scans. No signup required.
สูตรนี้ผิดหาก Fontana เป็นข้อความ:
=VLOOKUP(Fontana,B2:E7,2,FALSE)
แก้เป็น:
=VLOOKUP("Fontana",B2:E7,2,FALSE)
ในบางภูมิภาค Excel ใช้เซมิโคลอนแทนจุลภาคเป็นตัวคั่นอาร์กิวเมนต์ หากสูตรถูกต้องแต่ Excel ไม่ยอมรับ ให้ตรวจการตั้งค่าภูมิภาคและตัวคั่นของโปรแกรม
แก้ #SPILL! และการอ้างอิงทั้งคอลัมน์
ใน Excel รุ่นที่รองรับ Dynamic Arrays การเขียนแบบนี้อาจทำให้สูตรพยายามคืนผลลัพธ์หลายเซลล์:
=VLOOKUP(A:A,A:C,2,FALSE)
หากต้องการคำนวณทีละแถว ให้ใช้เซลล์เดียว:
Recommended Free Tools
=VLOOKUP(A2,A:C,2,FALSE)
หรือใช้ @ ในกรณีที่ต้องการบังคับการคำนวณค่าเดียว:
=VLOOKUP(@A:A,A:C,2,FALSE)
@ ไม่ใช่คำตอบสากล หากต้องการผลลัพธ์หลายรายการควรใช้ฟังก์ชันที่ออกแบบมาสำหรับ Dynamic Array เช่น FILTER และตรวจว่าเซลล์ปลายทางว่างพอสำหรับผลลัพธ์ที่กระจายออกมา
ล็อกช่วงเมื่อคัดลอกสูตร
ใช้เครื่องหมาย $ กับช่วงต้นทาง:
=VLOOKUP(A2,$F$2:$G$100,2,FALSE)
หากไม่ล็อก ช่วงอาจเลื่อนจาก F2:G100 เป็น F3:G101 เมื่อคัดลอกลงแถวถัดไป เลือกช่วงอ้างอิงในสูตรแล้วกด F4 เพื่อสลับรูปแบบการล็อก
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteเมื่อต้องค้นหาข้ามชีต ให้ตรวจชื่อชีตและใส่เครื่องหมายอัญประกาศเดี่ยวเมื่อชื่อมีเว้นวรรค:
=VLOOKUP(A2,'รายการสินค้า'!$A$2:$C$100,3,FALSE)
หากเป็นไฟล์ภายนอก ไฟล์ต้นทางต้องยังอยู่ในตำแหน่งเดิม หรือจำเป็นต้องอัปเดตลิงก์เมื่อย้ายไฟล์
กรณีข้อมูลซ้ำและผลลัพธ์ว่าง
VLOOKUP คืนค่าจากรายการแรกที่ตรงกัน ไม่ได้คืนค่าทุกรายการ หากต้องการตรวจรายการซ้ำใช้:
=COUNTIF($F$2:$F$100,A2)
หากต้องการรวมยอดจากหลายรายการ ให้ใช้ SUMIF หรือ SUMIFS แทน:
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →=SUMIFS($G$2:$G$100,$F$2:$F$100,A2)
สำหรับการคืนค่าหลายรายการ ใช้ FILTER:
=FILTER($G$2:$G$100,$F$2:$F$100=A2,"ไม่พบข้อมูล")
หากข้อมูลมีจำนวนมาก ต้องรวมหลายไฟล์ หรือทำกระบวนการเดิมซ้ำเป็นประจำ อาจเหมาะกับ PivotTable หรือ Power Query มากกว่าการสร้าง VLOOKUP หลายพันสูตร
เมื่อใดควรเปลี่ยนไปใช้ XLOOKUP หรือ INDEX/MATCH
| ทางเลือก | เหมาะกับงาน | ข้อควรระวัง |
|---|---|---|
| VLOOKUP | ไฟล์เดิมและการค้นหาแบบง่าย | คอลัมน์ค้นหาต้องอยู่ซ้ายสุด และต้องนับเลขคอลัมน์ |
| XLOOKUP | ต้องการสูตรอ่านง่าย ค้นหาได้สองทิศทาง หรือกำหนดข้อความเมื่อไม่พบ | ต้องตรวจว่า Excel รุ่นที่ใช้งานรองรับ |
| INDEX/MATCH | ต้องค้นหาจากขวาไปซ้าย ใช้กับ Excel รุ่นเก่า หรือมีค่าค้นหายาว | สูตรซับซ้อนกว่าเพราะใช้สองฟังก์ชัน |
| FILTER | ต้องการคืนค่าหลายรายการ | ต้องรองรับ Dynamic Arrays และอาจเกิด #SPILL! |
XLOOKUP
=XLOOKUP(A2,$F$2:$F$100,$G$2:$G$100,"ไม่พบข้อมูล")
XLOOKUP ไม่ต้องนับเลขคอลัมน์ ค้นหาจากขวาไปซ้ายได้ และใช้ exact match เป็นค่าเริ่มต้น ไวยากรณ์เต็มคือ:
=XLOOKUP(lookup_value,lookup_array,return_array,[if_not_found],[match_mode],[search_mode])
Microsoft ระบุการรองรับ XLOOKUP ใน Microsoft 365, Excel 2024, Excel 2021, Excel 2019 และแพลตฟอร์มที่เกี่ยวข้อง แต่ไฟล์เก่าหรือคอมพิวเตอร์ในองค์กรอาจไม่มีฟังก์ชันนี้ จึงควรตรวจรุ่นก่อนแจกจ่ายไฟล์ ดูรายละเอียดได้จาก Microsoft Support: XLOOKUP
The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Quick Recap
สรุปขั้นตอนแก้ VLOOKUP แบบไม่ตกหล่น
- เปลี่ยนสูตรให้ใช้
FALSEหากต้องการค่าตรงกัน - ตรวจว่าค่าค้นหาอยู่ในคอลัมน์ซ้ายสุดของช่วง
- นับ
col_index_numจากซ้ายสุดของช่วงใหม่ทุกครั้ง - ล็อกช่วงด้วย
$ก่อนลากสูตร - ใช้
COUNTIFตรวจว่ามีค่าต้นทางหรือไม่ - ตรวจตัวเลขกับข้อความ ช่องว่าง อักขระพิเศษ และวันที่
- ตรวจค่าซ้ำ เพราะ VLOOKUP คืนเพียงรายการแรก
- ใช้
IFNAหลังแก้ต้นเหตุแล้ว ไม่ใช่เพื่อซ่อนสูตรที่ผิด - เลือก
XLOOKUP,INDEX/MATCH,FILTERหรือSUMIFSเมื่อโจทย์เกินขอบเขตของ VLOOKUP
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

