Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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 ทำงานอย่างไร

ไวยากรณ์ของฟังก์ชันคือ:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
  • lookup_value คือค่าที่ต้องการค้นหา
  • table_array คือช่วงข้อมูล โดยคอลัมน์ซ้ายสุดต้องเป็นคอลัมน์ค้นหา
  • col_index_num คือลำดับคอลัมน์ผลลัพธ์ โดยนับซ้ายสุดของช่วงเป็น 1
  • range_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. ค่าที่ค้นหามีอยู่จริงหรือไม่
  2. ค่าค้นหาอยู่ในคอลัมน์ซ้ายสุดของ table_array หรือไม่
  3. ใช้ FALSE หรือ TRUE เหมาะกับงานหรือไม่
  4. หากใช้ TRUE คอลัมน์แรกเรียงจากน้อยไปมากหรือไม่
  5. เลข col_index_num ไม่เกินจำนวนคอลัมน์ในช่วงหรือไม่
  6. ช่วงอ้างอิงถูกล็อกด้วย $ หรือไม่
  7. ค่าหนึ่งเป็นตัวเลข แต่อีกค่าหนึ่งเป็นข้อความหรือไม่
  8. มีช่องว่าง อักขระพิเศษ หรือวันที่ที่เก็บคนละรูปแบบหรือไม่
  9. ชื่อชีต ช่วงข้อมูล และเครื่องหมายคำพูดถูกต้องหรือไม่
  10. สูตรถูกบันทึกเป็นข้อความ หรือมีวงเล็บและตัวคั่นผิดหรือไม่

แก้ #N/A: ไม่พบค่าที่ตรงกัน

#N/A หมายถึง Excel ไม่พบค่าที่ตรงกัน แต่ไม่ได้แปลว่าข้อมูลไม่มีอยู่เสมอไป สาเหตุอาจเป็นช่องว่าง ชนิดข้อมูล หรือรูปแบบวันที่ที่ต่างกัน

ตรวจว่ามีค่าต้นทางหรือไม่

=COUNTIF($F$2:$F$100,A2)

ถ้าได้ 0 ให้ตรวจค่าต้นทางและค่าค้นหา หากได้มากกว่า 0 แต่ VLOOKUP ยังขึ้น #N/A ให้ตรวจชนิดข้อมูลและอักขระแฝง

ลบช่องว่างและอักขระที่มองไม่เห็น

=TRIM(A2)

หากข้อมูลมาจากเว็บหรือระบบภายนอก อาจมี non-breaking space:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
=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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

ตรวจวันที่

วันที่หนึ่งอาจเป็นเลขลำดับของ Excel แต่อีกเซลล์เป็นข้อความ เช่น "18/08/2026" ตรวจด้วย ISNUMBER() และแปลงด้วย DATEVALUE() เมื่อแน่ใจว่ารูปแบบวันที่ตรงกับการตั้งค่าภูมิภาคของ Excel

แสดงข้อความเมื่อไม่พบข้อมูล

=IFNA(VLOOKUP(A2,$F$2:$G$100,2,FALSE),"ไม่พบรหัส")

ใช้ IFNA เมื่ออยากดักเฉพาะกรณีไม่พบข้อมูล ส่วน IFERROR ดักข้อผิดพลาดหลายชนิด:

=IFERROR(VLOOKUP(A2,$F$2:$G$100,2,FALSE),"ตรวจสอบข้อมูล")

ควรตรวจสูตรให้ถูกต้องก่อน เพราะ IFERROR อาจปิดบังปัญหาอย่างช่วงอ้างอิงผิดหรือเลขคอลัมน์ผิด ดูแนวทางเพิ่มเติมจาก Microsoft: วิธีแก้ #N/A

ได้ค่าผิดทั้งที่ไม่มีข้อผิดพลาด

ไม่ได้ใส่ FALSE

สูตรนี้:

=VLOOKUP(A2,$F$2:$G$100,2)

เทียบเท่ากับการใช้การค้นหาแบบใกล้เคียง เพราะค่าเริ่มต้นของอาร์กิวเมนต์ตัวที่สี่คือ TRUE สำหรับรหัส ชื่อ และเลขเอกสาร ให้เขียน FALSE ชัดเจนเสมอ:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
=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

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

แก้ #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

แก้ #NAME?

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

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

สูตรนี้ผิดหาก 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)

หากต้องการคำนวณทีละแถว ให้ใช้เซลล์เดียว:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
=VLOOKUP(A2,A:C,2,FALSE)

หรือใช้ @ ในกรณีที่ต้องการบังคับการคำนวณค่าเดียว:

=VLOOKUP(@A:A,A:C,2,FALSE)

@ ไม่ใช่คำตอบสากล หากต้องการผลลัพธ์หลายรายการควรใช้ฟังก์ชันที่ออกแบบมาสำหรับ Dynamic Array เช่น FILTER และตรวจว่าเซลล์ปลายทางว่างพอสำหรับผลลัพธ์ที่กระจายออกมา

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

ล็อกช่วงเมื่อคัดลอกสูตร

ใช้เครื่องหมาย $ กับช่วงต้นทาง:

=VLOOKUP(A2,$F$2:$G$100,2,FALSE)

หากไม่ล็อก ช่วงอาจเลื่อนจาก F2:G100 เป็น F3:G101 เมื่อคัดลอกลงแถวถัดไป เลือกช่วงอ้างอิงในสูตรแล้วกด F4 เพื่อสลับรูปแบบการล็อก

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

เมื่อต้องค้นหาข้ามชีต ให้ตรวจชื่อชีตและใส่เครื่องหมายอัญประกาศเดี่ยวเมื่อชื่อมีเว้นวรรค:

=VLOOKUP(A2,'รายการสินค้า'!$A$2:$C$100,3,FALSE)

หากเป็นไฟล์ภายนอก ไฟล์ต้นทางต้องยังอยู่ในตำแหน่งเดิม หรือจำเป็นต้องอัปเดตลิงก์เมื่อย้ายไฟล์

กรณีข้อมูลซ้ำและผลลัพธ์ว่าง

VLOOKUP คืนค่าจากรายการแรกที่ตรงกัน ไม่ได้คืนค่าทุกรายการ หากต้องการตรวจรายการซ้ำใช้:

=COUNTIF($F$2:$F$100,A2)

หากต้องการรวมยอดจากหลายรายการ ให้ใช้ SUMIF หรือ SUMIFS แทน:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
=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

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

สรุปขั้นตอนแก้ VLOOKUP แบบไม่ตกหล่น

  1. เปลี่ยนสูตรให้ใช้ FALSE หากต้องการค่าตรงกัน
  2. ตรวจว่าค่าค้นหาอยู่ในคอลัมน์ซ้ายสุดของช่วง
  3. นับ col_index_num จากซ้ายสุดของช่วงใหม่ทุกครั้ง
  4. ล็อกช่วงด้วย $ ก่อนลากสูตร
  5. ใช้ COUNTIF ตรวจว่ามีค่าต้นทางหรือไม่
  6. ตรวจตัวเลขกับข้อความ ช่องว่าง อักขระพิเศษ และวันที่
  7. ตรวจค่าซ้ำ เพราะ VLOOKUP คืนเพียงรายการแรก
  8. ใช้ IFNA หลังแก้ต้นเหตุแล้ว ไม่ใช่เพื่อซ่อนสูตรที่ผิด
  9. เลือก 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.