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





ใส่ความเห็น