1. ข้อมูลแยกกันอยู่คนละที่… จะเอาค่ามาเทียบยังไง
เคยเจอสถานการณ์นี้ไหมครับ — คุณมีข้อมูล 2 ตารางที่ต้องเชื่อมโยงกัน เช่น:
- ตารางที่ 1: รายการสินค้าที่ขายได้ พร้อมรหัสสินค้า (ไม่มีชื่อสินค้า)
- ตารางที่ 2: รายการสินค้าพร้อมชื่อและราคา
คุณต้องการเอา ชื่อสินค้า จากตารางที่ 2 มาใส่ในตารางที่ 1 โดยเทียบจากรหัสสินค้า
ถ้าข้อมูลมีแค่ 10-20 รายการ ก็คงเปิดเทียบทีละตัว พิมพ์ตามไปได้ แต่ถ้าเป็น 200 รายการล่ะ? หรือ 2,000 รายการ? คงไม่มีใครอยากนั่งเทียบทีละบรรทัดแน่นอนครับ
VLOOKUP คือฟังก์ชันที่ช่วยคุณ ค้นหาค่าในตารางที่สอง โดยเทียบจากค่าที่กำหนด (ค่าคีย์) และ ดึงค่าที่สัมพันธ์กันมาแสดง โดยอัตโนมัติ
VLOOKUP ทำงานง่ายมาก — คุณบอก Excel ว่า:
- ค่าที่ต้องการค้นหา (เช่น รหัสสินค้า P001)
- ตารางที่ต้องการค้นหา (ตารางอ้างอิง)
- คอลัมน์ที่ต้องการดึงค่า (เช่น ชื่อสินค้า)
- ต้องการเจอแบบตรงเป๊ะหรือใกล้เคียง (ใช้ FALSE แทน exact match)
ตัวอย่างง่ายที่สุด: ถ้าคุณพิมพ์รหัสสินค้า P001 แล้ว VLOOKUP จะไปหาในตารางอ้างอิงให้ เจอแล้วก็ดึงชื่อสินค้าของรหัสนั้นมาให้คุณเลย — แค่วินาทีเดียว! ผมว่า magic เลยนะครับ
เปิดไฟล์ตัวอย่างมาทำไปพร้อมกันเลยดีกว่าครับ — มีชีทตัวอย่างพร้อมข้อมูลให้ลองใช้ VLOOKUP จริง จะได้เห็นว่ารวดเร็วแค่ไหน
2. VLOOKUP ทำงานยังไง? เข้าใจโครงสร้างง่ายๆ
มาดูโครงสร้างของฟังก์ชัน VLOOKUP กันครับ:
=VLOOKUP( ค่าที่ค้นหา , ตารางที่ค้น , ลำดับคอลัมน์ , การค้นหาแบบตรง )
- ค่าที่ค้นหา (Lookup_Value): ค่าที่จะใช้เป็นตัวเทียบ เช่น รหัสสินค้า P001
- ตารางที่ค้น (Table_Array): ช่วงของตารางอ้างอิงที่มีทั้งค่าคีย์และค่าที่อยากดึงมา
- ลำดับคอลัมน์ (Col_Index_Num): คอลัมน์ที่ 1 คือคอลัมน์แรกของตารางที่เลือก — ต้องการดึงค่าจากคอลัมน์ไหนก็ใส่เลขลำดับนั้น
- การค้นหาแบบตรง (Range_Lookup): ใส่ FALSE = เจอตรงเป๊ะเคุณั้น, TRUE หรือเว้นว่าง = เจอแบบใกล้เคียง
🔦ข้อควรจำที่สำคัญที่สุด
คอลัมน์แรกของตารางอ้างอิงต้องเป็นค่าที่คุณใช้ค้นหาเสมอ! เพราะ VLOOKUP จะมองหาค่าคีย์จากคอลัมน์แรกเคุณั้น
| ข้อดีของ VLOOKUP | ข้อควรระวัง |
|---|---|
| ใช้งานง่าย จำโครงสร้างไม่ยาก | ค้นหาเฉพาะจากซ้ายไปขวาเคุณั้น |
| ใช้กับข้อมูลขนาดใหญ่ได้ดี | คอลัมน์แรกของตารางต้องเป็นค่าคีย์ |
| ไม่ต้องเขียนมาโครซับซ้อน | ถ้ามีค่าซ้ำจะได้ค่าแรกที่เจอ |
| อัปเดตอัตโนมัติเมื่อข้อมูลเปลี่ยน | ต้องระวังเรื่องเลขลำดับคอลัมน์ถ้าเพิ่มคอลัมน์ |
3. ตัวอย่างที่ 1: ค้นหาราคาสินค้าจากรหัส
สมมติว่าคุณทำงานร้านค้าส่งแห่งหนึ่ง มีข้อมูล 2 ตาราง:
ตารางสินค้าที่ขาย (ชีท “ใบสั่งขาย”):
| รหัสสินค้า | จำนวน | ราคาต่อหน่วย | รวมเงิน |
|---|---|---|---|
| P001 | 10 | ||
| P003 | 5 | ||
| P005 | 8 | ||
| P002 | 3 |
ตารางราคาสินค้า (ชีท “ราคาสินค้า”):
| รหัสสินค้า | ชื่อสินค้า | ราคาขาย |
|---|---|---|
| P001 | เสื้อยืดคอกลม | 120 |
| P002 | กางเกงยีนส์ | 350 |
| P003 | กระเป๋าสะพาย | 290 |
| P004 | รองเท้าผ้าใบ | 590 |
| P005 | หมวกแก็ป | 150 |
วิธีทำ
ขั้นตอนที่ 1: เปิดไฟล์ตัวอย่างที่แนบมา แล้วไปที่ชีท “ใบสั่งขาย” คลิกที่เซลล์ C2 (ช่องราคาต่อหน่วยของรายการแรก)
ขั้นตอนที่ 2: พิมพ์สูตรนี้ลงไป:
=VLOOKUP(A2, 'ราคาสินค้า'!$A$2:$C$6, 3, FALSE)
อธิบายสูตร:
- A2 = ค่าที่ต้องการค้นหา (รหัสสินค้า P001)
- ‘ราคาสินค้า’!$A$2:$C$6 = ช่วงตารางในชีท “ราคาสินค้า” ตั้งแต่คอลัมน์ A ถึง C
- 3 = ต้องการดึงค่าจากคอลัมน์ที่ 3 (ราคาขาย)
- FALSE = ต้องการเจอแบบตรงเป๊ะเคุณั้น
🔥เคล็ดลับ: $A$2:$C$6 ใช้ $ (dollar sign) เพื่อล็อกช่วงตารางไม่ให้เลื่อนตอนก็อปปี้สูตรลงมา — เรียก Absolute Reference ครับ
ขั้นตอนที่ 3: กด Enter แล้วลาก Fill Handle (จุดสี่เหลี่ยมมุมขวาล่างของเซลล์) ลงมา จะเห็นว่าราคาต่อหน่วยของทุกสินค้าถูกเติมมาโดยอัตโนมัติ!
ขั้นตอนที่ 4: ใส่สูตรคำนวณรวมเงินที่คอลัมน์ D เช่น =B2*C2 แล้วลากลงมา ก็จะได้ยอดรวมของแต่ละรายการ
ลองเปิดไฟล์ตัวอย่างดูครับ — ชีท “ใบสั่งขาย” มีข้อมูลพร้อมให้ลองทำตามทีละขั้นตอนเลย
4. ตัวอย่างที่ 2: ตามหาชื่อพนักงานจากรหัส
อีกตัวอย่างที่เจอบ่อยคือการค้นหาชื่อพนักงานครับ สมมติว่าคุณเป็น HR มีข้อมูลดังนี้:
ตารางลงเวลาทำงาน (ชีท “เวลาเข้า-ออก”):
| รหัสพนักงาน | ชื่อ-นามสกุล | เวลาเข้า | เวลาออก |
|---|---|---|---|
| EMP005 | 08:12 | 17:30 | |
| EMP012 | 07:55 | 18:05 | |
| EMP003 | 08:30 | 16:45 | |
| EMP008 | 08:05 | 17:20 |
ตารางข้อมูลพนักงาน (ชีท “ทะเบียนพนักงาน”):
| รหัสพนักงาน | ชื่อ-นามสกุล | แผนก | เบอร์โทร |
|---|---|---|---|
| EMP001 | สมชาย ใจดี | ฝ่ายขาย | 081-234-5678 |
| EMP002 | สมศรี รักเรียน | ฝ่ายบัญชี | 082-345-6789 |
| EMP003 | วิชัย มั่งมี | ฝ่ายขาย | 083-456-7890 |
| EMP004 | นภา สดใส | ฝ่ายบุคคล | 084-567-8901 |
| EMP005 | ประเสริฐ สุขสันต์ | ฝ่ายผลิต | 085-678-9012 |
| EMP008 | สุดา เมตตา | ฝ่ายจัดซื้อ | 086-789-0123 |
| EMP012 | ธนพล กล้าหาญ | ฝ่ายผลิต | 087-890-1234 |
วิธีทำ
คลิกที่เซลล์ B2 ในชีท “เวลาเข้า-ออก” แล้วพิมพ์สูตร:
=VLOOKUP(A2, 'ทะเบียนพนักงาน'!$A$2:$D$8, 2, FALSE)
อธิบาย:
- A2 = รหัสพนักงาน EMP005
- ‘ทะเบียนพนักงาน’!$A$2:$D$8 = ตารางพนักงานช่วง A2:D8
- 2 = คอลัมน์ที่ 2 คือชื่อ-นามสกุล
- FALSE = ค้นหาแบบตรงเป๊ะ
กด Enter แล้วลาก Fill Handle ลงมา — เสร็จ! ครบทั้ง 4 แถวในพริบตา
5. ตัวอย่างที่ 3: เกรดนักเรียน — ใช้ VLOOKUP แบบประมาณ (TRUE)
ในตัวอย่างก่อนหน้านี้เราใช้ FALSE เพื่อค้นหาแบบตรงเป๊ะเสมอ แต่ก็มีกรณีที่เราต้องการค้นหาแบบใกล้เคียงครับ เช่น การคิดเกรด:
ตารางคะแนนนักเรียน:
| ชื่อนักเรียน | คะแนน | เกรด |
|---|---|---|
| สมชาย | 85 | |
| สมหญิง | 67 | |
| วิชัย | 92 | |
| นภา | 73 |
ตารางเกณฑ์การให้เกรด:
| คะแนนต่ำสุด | เกรด |
|---|---|
| 80 | A |
| 70 | B |
| 60 | C |
| 50 | D |
| 0 | F |
วิธีทำ
คลิกที่ C2 แล้วพิมพ์:
=VLOOKUP(B2, $E$2:$F$6, 2, TRUE)
อธิบาย:
- B2 = คะแนนของสมชาย (85)
- $E$2:$F$6 = ตารางเกณฑ์เกรด (คอลัมน์ E-F)
- 2 = ดึงคอลัมน์ที่ 2 คือเกรด
- TRUE = ค้นหาแบบประมาณ — ถ้าไม่เจอตรงเป๊ะ จะหาค่าที่น้อยกว่าที่ใกล้ที่สุด
🔑สำคัญมาก! เวลาใช้ TRUE ต้องเรียงข้อมูลคอลัมน์แรก จากน้อยไปมาก (Ascending order) ไม่งั้นผลลัพธ์จะผิดครับ
สมชายได้ 85 คะแนน — VLOOKUP จะหาใน E:E ว่าเจอ 85 ไหม? ไม่เจอ ก็หาค่าที่น้อยกว่า 85 ที่ใกล้ที่สุดคือ 80 แล้วดึงเกรด A มาให้ — ถูกต้อง!
6. ข้อผิดพลาดที่พบบ่อย (และวิธีแก้)
| ข้อผิดพลาด | สาเหตุ | วิธีแก้ |
|---|---|---|
| #N/A | ไม่พบค่าที่ค้นหา | ตรวจสอบว่าค่าคีย์ตรงกันทั้งตัวพิมพ์เล็ก-ใหญ่ และไม่มีช่องว่างเกิน |
| #REF! | ระบุลำดับคอลัมน์เกินกว่าที่ตารางมี | เช็คว่าคอลัมน์ที่ต้องการอยู่ในช่วงที่เลือก |
| ได้ค่าผิด | ลืมใส่ FALSE ทำให้เจอแบบใกล้เคียง | แก้เป็น FALSE หรือ 0 เสมอเมื่อต้องการแบบตรง |
| ได้ค่าแถวแรกตลอด | ตารางอ้างอิงไม่ได้ล็อกด้วย $ | ใช้ $A$1:$C$100 แทน A1:C100 |
| ไม่มีอะไรขึ้น | ค่าคีย์กับตารางอ้างอิง Format ไม่ตรงกัน | เช็คว่าเป็นตัวเลขเหมือนกันหรือข้อความเหมือนกัน |
เคล็ดลับเช็ค Error ด้วย IFNA
ถ้าไม่อยากเห็น #N/A เต็มหน้า ให้ใช้ IFNA ครอบ VLOOKUP ไว้:
=IFNA(VLOOKUP(A2, ราคาสินค้า!$A$2:$C$6, 3, FALSE), "ไม่พบสินค้า")
แทนที่จะขึ้น #N/A จะแสดงข้อความ “ไม่พบสินค้า” แทน ดูเป็นระเบียบขึ้นเยอะครับ
7. สรุป: VLOOKUP ไม่ยากอย่างที่คิด
VLOOKUP เป็นฟังก์ชันค้นหาข้อมูลที่ใช้ง่ายและมีประโยชน์มากในชีวิตการทำงาน:
| หัวข้อ | สรุป |
|---|---|
| โครงสร้าง | =VLOOKUP(ค่าค้น, ตาราง, คอลัมน์, FALSE/TRUE) |
| การใช้หลัก | FALSE สำหรับเจอตรงเป๊ะ (ส่วนใหญ่ใช้แบบนี้) |
| TRUE ใช้เมื่อ | ต้องการประมาณค่าแบบเกรด ส่วนลด ภาษี |
| ข้อควรจำ | คอลัมน์แรกของตารางต้องเป็นค่าคีย์ที่ค้นหาเสมอ |
| ข้อผิดพลาดหลัก | #N/A (ไม่เจอ), #REF! (คอลัมน์เกิน), ได้ค่าผิด (ลืม $ ล็อก) |
แล้วขั้นต่อไปคืออะไร?
VLOOKUP คือจุดเริ่มต้นของการทำงานกับข้อมูลข้ามตารางครับ ฟังก์ชันนี้จะช่วยให้คุณทำงานกับข้อมูลหลายแหล่งได้อย่างมืออาชีพ แต่ถ้าอยากค้นหาในแนวอื่นๆ ลองดู XLOOKUP หรือ INDEX+MATCH ในบทความต่อๆ ไปนะครับ
สำหรับตอนนี้ ลองดาวน์โหลดไฟล์ตัวอย่าง (File > Create a Copy > Download a Copy) แล้วฝึกใช้ VLOOKUP กับข้อมูลจริงดูครับ — รับรองว่าพอทำคล่องแล้วจะติดใจ เพราะมันประหยัดเวลาให้คุณมหาศาลเลยล่ะ!