คำอธิบาย
ฟังก์ชัน VLOOKUP คือวิธีค้นหาและดึงข้อมูลจากตารางใน Excel ตามค่าที่ระบุ ราวกับว่าคุณมีสมุดบันทึกโทรศัพท์ขนาดย่อม ๆ อยู่ในคอมพิวเตอร์ คำนวณได้เลย!
มีครั้งแรกในเวอร์ชันไหน
2003 หรือ Version ก่อนหน้า
รูปแบบคำสั่ง (Syntax)
VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])
Arguments
- lookup_value (Required – string)
ค่าที่คุณต้องการค้นหา โดยค่าต้องอยู่ในคอลัมน์แรกของช่วงตารางอ้างอิง table_array -
table_array (Required – range)
ช่วงของเซลล์ที่ฟังก์ชัน VLOOKUP จะค้นหา lookup_value - col_index_num (Required – number)
หมายเลขคอลัมน์ใน table_array ที่มีค่าที่คุณต้องการให้เอากลับมา - range_lookup (Optional – boolean)
ค่า logic ที่จะระบุว่าคุณต้องการการตรงกันที่ถูกต้องหรือประมาณค่า- TRUE หรือ 1 – Approximate Match = เหมาะกับตารางอ้างอิงที่มีค่าเป็นช่วง (ไม่ใช่เรื่องสะกดคล้ายกันนะ)
- FALSE หรือ 0 – Exact Match = เหมาะกับตารางอ้างอิงค่าเดียว
ตัวอย่างการใช้งาน (Examples)
- Formula:
Description: ใช้ VLOOKUP แบบ Exact Match ค้นหาโดยเอาค่า “TX0003” ไปหาในตารางอ้างอิง B3:G8 โดยค้นหาที่คอลัมน์แรก ซึ่งคือ B3:B8 (OrderID) แล้วดึงคอลัมน์ที่ 3 กลับมา (Product Type)=VLOOKUP("TX0003",B3:G8,3,FALSE)
Result: “Book” - Formula:
Description: ใช้ VLOOKUP แบบ Exact Match ค้นหาโดยเอาค่า “TX0003” ไปหาในตาราง TxData โดยค้นหาที่คอลัมน์แรกคือ OrderID แล้วดึงคอลัมน์ที่ 3 กลับมา (Product Type)=VLOOKUP("TX0003",TxData,3,FALSE)
Result: “Book” - Formula:
Description: ใช้ VLOOKUP แบบ Exact Match ค้นหาโดยเอาค่า “TX0003” ไปหาในตาราง TxData โดยค้นหาที่คอลัมน์แรกคือ OrderID แล้วใช้ MATCH หาว่า Product Type อยู่เป็นคอลัมน์ที่เท่าไหร่ในหัวตาราง (ในที่นี้คือ 3 ) แล้วดึงค่ากลับมา=VLOOKUP("TX0003",TxData,MATCH("Product Type",TxData[#Headers],0),FALSE)
Result: “Book” - Formula:
Description: ใช้ VLOOKUP แบบ Exact Match ค้นหาโดยเอาค่า “Monitor” ไปหาในตารางอ้างอิง D3:G8 โดยค้นหาที่คอลัมน์แรก ซึ่งคือ D3:D8 (Product Type) แล้วดึงคอลัมน์ที่ 4 กลับมา (SalesAmt)=VLOOKUP("Monitor",D3:G8,4,FALSE)
Result: 2500 (ถ้าใช้ VLOOKUP Exact Match จะได้ตัวแรกที่เจอ Monitor) - Formula:
Description: ใช้ VLOOKUP แบบ Exact Match ค้นหาโดยเอาค่า “Monitor” ไปหาในตาราง TxData ในคอลัมน์ Product Type จนถึง SalesAmt โดยค้นหาที่คอลัมน์แรก ซึ่งคือ Product Type แล้วดึงคอลัมน์ที่ 4 กลับมา (SalesAmt)=VLOOKUP("Monitor",TxData[[Product Type]:[SalesAmt]],4,FALSE)
Result: 2500 (ถ้าใช้ VLOOKUP Exact Match จะได้ตัวแรกที่เจอ Monitor) - Formula:
Description: ใช้ VLOOKUP แบบ Exact Match ค้นหาโดยหาคำอะไรก็ได้ที่มีตัว “oo” อยู่ในนั้น ไปหาในตาราง TxData ในคอลัมน์ Product Type จนถึง SalesAmt โดยค้นหาที่คอลัมน์แรก ซึ่งคือ Product Type แล้วดึงคอลัมน์ที่ 4 กลับมา (SalesAmt)=VLOOKUP("*oo*",TxData[[Product Type]:[SalesAmt]],4,FALSE)
Result: 1100 (ถ้าใช้ VLOOKUP Exact Match จะได้ตัวแรกที่เจอ oo คือ Book) - Formula:
Description: ใช้ VLOOKUP แบบ Approximate Match หายอดขาย (SalesAmt) ของวันที่ใกล้เคียงที่สุดที่เกิดก่อนหรือเท่ากับ 15 กุมภาพันธ์ 2025 แล้วดึงคอลัมน์ที่ 5 กลับมา (SalesAmt)=VLOOKUP(DATE(2025,2,15),TxData[[Date]:[SalesAmt]],5,TRUE)
Result: 800 (ถ้าใช้ VLOOKUP Approximate Match จะคัดเลือกตัวที่น้อยกว่าหรือเท่ากับ Lookup Value ซึ่งคือ 01/01/2025, 20/01/2025, 03/02/2025 แล้วเอาตัวสุดท้ายมาให้เรา)
Tips & Tricks
- การใช้งาน VLOOKUP อย่าลืมเรื่องพื้นที่ตารางอ้างอิง ว่าอาจต้อง Lock $ หรือใช้ Table มาช่วย เพื่อรักษาช่วงข้อมูลให้ไม่เลื่อน!
- ถ้าต้องการให้ Column index Number ยืดหยุ่นขึ้น ลองใช้คู่กับฟังก์ชัน MATCH ดูนะ
ข้อควรระวัง (Cautions)
- ถ้าเราระบุ Column Index Number เป็นเลขค่าคงที่ อย่าเผลอไปแทรกคอลัมน์ของตารางอ้างอิงหลังจากเขียนสูตรเสร็จแล้วเด็ดขาด ไม่งั้นลำดับคอลัมน์จะเพี้ยนไปได้ (แก้โดยใช้ MATCH มาช่วย หรืออาจเปลี่ยนเป็น XLOOKUP ไปเลย)
- ระวังการใช้ VLOOKUP Approximate Match ด้วย ว่าคอลัมน์แรกจะต้องเรียงจากน้อยไปมากเท่านั้น ไม่งั้นผลลัพธ์อาจผิดได้
ฟังก์ชันที่เกี่ยวข้อง
ข้อดี / ข้อจำกัด
VLOOKUP เป็นฟังก์ชันยอดนิยมมากที่สุดในกลุ่ม Lookup แต่มีข้อจำกัดในการตรวจหาค่าที่ใช้ได้เฉพาะการค้นหาจากคอลัมน์ซ้ายสุด แล้ววิ่งไปหยิบค่าที่ต้องการทางขวาเท่านั้น (ไปทางซ้ายไม่ได้) ทำให้บางครั้งต้องเลี่ยงไปใช้ INDEX + MATCH หรือ XLOOKUP แทน
References
ขอบคุณที่เข้ามาอ่านนะครับ ❤️
Leave a Reply