สูตร VLOOKUP ใน Google Sheets: ดึงข้อมูลข้ามชีต พร้อมวิธีแก้ #N/A

วิธีใช้สูตร VLOOKUP ใน Google Sheets ดึงข้อมูลจากอีกชีตด้วยรหัสหรือชื่อ อธิบายทีละส่วน พร้อมวิธีแก้ #N/A ที่เจอบ่อย และตัวอย่างใช้งานจริงในสำนักงาน

สูตร VLOOKUP ใน Google Sheets: ดึงข้อมูลข้ามชีต พร้อมวิธีแก้ #N/A

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

=VLOOKUP(ค่าที่ค้นหา, ช่วงตาราง, คอลัมน์ที่ต้องการ, FALSE)

ตัวอย่างข้อมูล

ชีต รายชื่อ (ตารางต้นทาง)

A: รหัสB: ชื่อ–สกุลC: ฝ่ายD: เบอร์ภายใน
E001สมชาย ใจดีบุคคล101
E002สมหญิง รักงานการเงิน205
E003วิชัย ขยันพัสดุ310

ชีต เบิกวัสดุ มีแค่รหัสในคอลัมน์ A อยากให้คอลัมน์ B แสดงชื่อเอง

เขียนสูตรทีละส่วน

ในชีต เบิกวัสดุ เซลล์ B2:

=VLOOKUP(A2, รายชื่อ!A:D, 2, FALSE)
ส่วนความหมาย
A2ค่าที่จะค้นหา (รหัสในแถวนี้)
รายชื่อ!A:Dตารางที่ค้น คอลัมน์แรกต้องเป็นคอลัมน์ที่มีรหัส
2ดึงคอลัมน์ที่ 2 ของช่วง (นับจาก A = 1) คือชื่อ–สกุล
FALSEต้องตรงกันพอดี (ใช้ FALSE เกือบทุกครั้ง)

อยากได้ฝ่าย เปลี่ยน 2 เป็น 3 อยากได้เบอร์ภายใน เปลี่ยนเป็น 4

ใช้กับทั้งคอลัมน์ในสูตรเดียว

แทนที่จะลากสูตรลงทุกแถว ใช้ ARRAYFORMULA ที่ B2:

=ARRAYFORMULA(IF(A2:A="", "", VLOOKUP(A2:A, รายชื่อ!A:D, 2, FALSE)))

IF(A2:A="", "", ...) ทำให้แถวที่ยังไม่กรอกรหัสเป็นช่องว่าง ไม่ขึ้น #N/A

แก้ #N/A: 5 สาเหตุที่เจอบ่อย

สาเหตุตัวอย่างวิธีแก้
ไม่มีค่านั้นในตารางจริง ๆพิมพ์ E009 ที่ไม่มีใช้ IFERROR(สูตร, "ไม่พบ")
มีช่องว่างเกิน“E001 ” มีเว้นวรรคท้ายค้นด้วย TRIM(A2)
ตัวเลขกับข้อความ00125 (ข้อความ) กับ 125 (ตัวเลข)ทำให้เป็นแบบเดียวกัน เช่น TEXT(A2,"00000")
คอลัมน์ค้นหาไม่ใช่คอลัมน์แรกค้นด้วยชื่อ แต่ชื่ออยู่คอลัมน์ Bปรับช่วงให้เริ่มที่ B หรือใช้ XLOOKUP / INDEX MATCH
ช่วงตารางเลื่อนตอนลากสูตรA2:D10 กลายเป็น A3:D11ใช้ทั้งคอลัมน์ A:D หรือ $A$2:$D$100

สูตรที่ปลอดภัยกว่า:

=IFERROR(VLOOKUP(TRIM(A2), รายชื่อ!A:D, 2, FALSE), "ไม่พบรหัส")

อย่าใช้ IFERROR ปิดทุก error ตั้งแต่แรก ให้ดูก่อนว่า #N/A มาจากอะไร ไม่อย่างนั้นข้อมูลผิดจะถูกซ่อนไว้

ดึงข้อมูลจากอีกไฟล์

VLOOKUP ค้นได้เฉพาะในไฟล์เดียวกัน ถ้าตารางอยู่อีกไฟล์ ให้ใช้ IMPORTRANGE ดึงมาก่อน หรือซ้อนในสูตร:

=VLOOKUP(A2, IMPORTRANGE("ลิงก์ไฟล์", "รายชื่อ!A:D"), 2, FALSE)

ครั้งแรกต้องกด “อนุญาตการเข้าถึง” ที่เซลล์

ข้อจำกัดของ VLOOKUP

  • ค้นได้เฉพาะ จากซ้ายไปขวา (คอลัมน์ค้นหาต้องอยู่ซ้ายสุดของช่วง)
  • ถ้าแทรกคอลัมน์ในตารางต้นทาง เลขคอลัมน์จะผิด
  • ได้ผลลัพธ์แรกที่เจอเท่านั้น ถ้ารหัสซ้ำ

ถ้าเจอข้อจำกัดเหล่านี้บ่อย XLOOKUP หรือ INDEX MATCH จะยืดหยุ่นกว่า

ให้ AI ช่วยเขียน

ใช้ Google Sheets ชีต "รายชื่อ" A=รหัส B=ชื่อ C=ฝ่าย
ชีต "เบิกวัสดุ" A=รหัส ต้องการให้ B แสดงฝ่าย ถ้าไม่พบให้แสดง "ไม่พบ"
เขียนสูตรแบบใช้ทั้งคอลัมน์ และอธิบายทีละส่วน

ดูเทคนิคถามสูตรกับ AI เพิ่มเติมใน EP8 ใช้ AI เขียนสูตร Google Sheets

คำถามที่พบบ่อย

TRUE กับ FALSE ต่างกันอย่างไร?
FALSE คือหาค่าที่ตรงพอดี TRUE คือหาค่าใกล้เคียง (ต้องเรียงข้อมูลก่อน) ใช้กับตารางช่วงคะแนนหรืออัตราภาษี งานทั่วไปใช้ FALSE

ค้นด้วยชื่อแทนรหัสได้ไหม?
ได้ แต่ชื่ออาจซ้ำหรือสะกดต่างกัน ใช้รหัสจะแม่นยำกว่า

ทำไมสูตรช้าเมื่อข้อมูลเยอะ?
ARRAYFORMULA กับทั้งคอลัมน์บนข้อมูลหลายหมื่นแถวอาจช้า จำกัดช่วงให้พอดี เช่น A2:A2000

สรุป

VLOOKUP = ค้นหาค่าในคอลัมน์แรก แล้วดึงคอลัมน์ที่ต้องการกลับมา ใช้ FALSE เสมอ เจอ #N/A ให้เช็กช่องว่าง ตัวเลขกับข้อความ และตำแหน่งคอลัมน์ก่อนใส่ IFERROR

อ่านต่อ: เปลี่ยน Google Sheets เป็น Web App

ตระกูล อ่อนรัตน์ Avatar

ตระกูล อ่อนรัตน์

ลงมือสร้างระบบช่วยงานจริง แล้วเขียนเล่าเป็นขั้นตอนให้ทำตามได้ ติดตรงไหน ถามไว้ในคอมเมนต์ด้านล่าง หรือส่งโจทย์มาที่หน้าติดต่อ

ส่งโจทย์ให้ผม

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *