ฟังก์ชั่น Vlookup เป็นฟังก์ชั่นหนึ่งที่ใช้บ่อยมาก แต่ผู้ที่ใช้ส่วนมากก็ยังไม่เข้าใจว่าทำงานอย่างไร อ่านใน Help แล้วก็ยังไม่เคลียร์ เมื่อเกิดปัญหาก็เลยไม่สามารถแก้ไขได้
มาดูส่วนประกอบหรือไวยากรณ์ของ Vlookup กันก่อนครับ Vlookup มีไวยากรณ์ดังนี้
Vlookup(lookup_value,table_array,col_index_num,[range_lookup])
หรือแปลตามแบบฉบับของผมเพื่อให้ง่ายต่อการเข้าใจ
Vlookup(ค่าที่ต้องการค้นหา, ตารางที่บรรจุค่าที่ต้องการค้นหา, คอลัมน์ที่ต้องการแสดงผล, รูปแบบการค้นหา)
จากไวยากรณ์ด้านบนแปลโดยรวมว่าให้นำค่าที่ต้องการค้นหา ไปค้นในคอลัมน์แรกของตารางที่บรรจุค่าที่ต้องการค้นหา แล้วนำค่าในคอลัมน์ทีต้องการแสดงผลมาแสดง
ซึ่งจะเห็นว่า Vlookup มีส่วนประกอบ 4 ส่วนครับ คือ
- ค่าที่ต้องการค้นหา เป็นค่าใด ๆ ก็ได้ทั้งนั้น
- ตารางที่บรรจุค่าที่ต้องการค้นหา แน่นอนครับว่าต้องเป็นตารางและคอลัมน์แรกของตารางต้องมีค่าที่ต้องการค้นหาในข้อ 1. อยู่ด้วย (แต่ไม่เสมอไป ขึ้นอยู่กับรูปแบบการค้นหาซึ่งเป็นส่วนประกอบสุดท้ายของฟังก์ชั่น)
ตารางที่บรรจุค่าที่ต้องการค้นหา เป็นตารางที่มีคอลัมน์เดียวได้หรือไม่ คำตอบคือ ได้ นั่นคือมีแต่เฉพาะค่าที่ต้องการค้นหาเท่านั้น - คอลัมน์ที่ต้องการแสดงผล หมายถึง ลำดับของคอลัมน์ในตารางที่บรรจุผลลัพธ์(ปกติคำว่าตารางมักจะมากกว่า 1 คอลัมน์และคอลัมน์ผลลัพธ์เป็นคอลัมน์ใด ๆ ก็ได้ในตารางแล้วแต่ความต้องการ) และที่สำคัญคอลัมน์ที่บรรจุค่าที่ต้องการค้นหานั้นต้องนับเป็นคอลัมน์แรกหรือคอลัมน์ที่ 1 ของตารางเสมอ
- รูปแบบการค้นหา มี แค่ 2 รูปแบบเท่านั้น คือ หาค่าแบบตรงตัว และ หาค่าแบบใกล้เคียง
การหาค่าแบบตรงตัว จะใช้ False หรือ 0 ในสูตร การหาค่าแบบใกล้เคียง จะใช้ True หรือ 1 หรือ ปล่อยว่าง
รูปแบบสูตรหาค่าตรงตัว
=Vlookup(ค่าที่ต้องการหา, ตารางที่บรรจุค่าที่ต้องการหา, คอลัมน์ที่บรรจุผลลัพธ์, False) หรือ
=Vlookup(ค่าที่ต้องการหา, ตารางที่บรรจุค่าที่ต้องการหา, คอลัมน์ที่บรรจุผลลัพธ์, 0)
เช่น
=Vlookup(A2,Sheet2!B5:D100,3,False)
หมายความว่า ให้หาค่าที่เท่ากับ A2 ในช่วงข้อมูล B5:B100 ของ Sheet2 แล้วนำค่าในคอลัมน์ที่ 3 ของตาราง B5:D100 (ซึ่งอยู่ในบรรทัดเดียวกัน) มาแสดง นั่นคือ นำค่าในคอลัมน์ D มาแสดง ( 1 คือคอลัมน์ B, 2 คือคอลัมน์ C, 3 คือคอลัมน์ D)
รูปแบบสูตรหาค่าใกล้เคียง
=Vlookup(ค่าที่ต้องการหา, ตารางที่บรรจุค่าที่ต้องการหา, คอลัมน์ที่บรรจุผลลัพธ์, True) หรือ
=Vlookup(ค่าที่ต้องการหา, ตารางที่บรรจุค่าที่ต้องการหา, คอลัมน์ที่บรรจุผลลัพธ์, 1) หรือ
=Vlookup(ค่าที่ต้องการหา, ตารางที่บรรจุค่าที่ต้องการหา, คอลัมน์ที่บรรจุผลลัพธ์)
เช่น
=Vlookup(A2,Sheet2!B5:D100,3,True)
หมายความว่า ให้หาค่าที่น้อยกว่าหรือเท่ากับ A2 ในช่วงข้อมูล B5:B100 ของ Sheet2 แล้วนำค่าในคอลัมน์ที่ 3 ของตาราง B5:D100 (ซึ่งอยู่ในบรรทัดเดียวกัน) มาแสดง นั่นคือ นำค่าในคอลัมน์ D มาแสดง ( 1 คือคอลัมน์ B, 2 คือคอลัมน์ C, 3 คือคอลัมน์ D)
การหาค่าแบบใกล้เคียงนี้ จะหาค่าได้อย่างรวดเร็วและจำเป็นต้องเรียงข้อมูลตามคอลัมน์ B (จากตัวอย่าง) จากน้อยไปหามากเสมอ ทั้งสองรูปแบบการค้นหา ถ้าไม่เจอค่าที่ต้องการ จะแสดงค่าผิดพลาดเป็น #N/A
ภาพตัวอย่างการใช้งานฟังก์ชัน Vlookup แบบตรงตัวและแบบใกล้เคียง
[su_tabs][su_tab title=”แบบตรงตัว”]เป็นการ Lookup แบบตรงตัว หากเจอค่าที่เท่ากับค่าที่ต้องการค้นหาจะแสดงค่าทีเจอ หากไม่เจอจะแสดงค่า #N/A[/su_tab]
[su_tab title=”แบบใกล้เคียง”]เป็นการ Lookup แบบใกล้เคียง หากเจอค่าที่น้อยกว่าหรือเท่ากับค่าที่ต้องการค้นหาจะแสดงค่าทีเจอ หากไม่เจอจะแสดงค่า #N/A[/su_tab]
[/su_tabs]
Revised: January 28, 2017 at 11:58
ขอบคุณมากครับกำลังมีปัญหาเรื่องการใช้งานพอดีเลยครับผม ขอบคุณครับ
ครับผม ยินดีที่ช่วยไ้ด้ครับ
าlถ้า ต้องการหาว่า ถ้าค่าหาค่่าแกน X แล้วหาแกน Y ด้วย สามารถใช้ vlookupซ้อนHlookup ได้ไหม หรือมี function อะไรที่ใช้ง่ายกว่า
สามารถใช้ฟังก์ชั่นในฟอร์มด้านล่างได้ครับ =Index(a,Match(b,c,0),Match(d,e,0))เพื่อความสะดวกในการถามตอบ สามารถถามได้ที่ http://www.snasui.com/ สามารถแนบภาพ แนบไฟล์ได้ แต่ต้องเป็นสมาชิกซึ่งฟรีครับ
ในกรณีที่เราต้องการหาข้อมูลที่ตรงในหลาย ๆ ชีท เช่น ชื่อคนที่อยู่ในแต่ละชีท(มีชื่อที่เหมือนกันในแต่ละชีท) แล้วให้แสดงผลการหาที่ชีทใหม่น่ะค่ะ ทำอย่างไรคะ
ช่วยแนบแฟ้มปัญหาไปที่ http://www.snasui.com/ เพื่อสะดวกในการถามตอบ จะช่วยดูให้ครับ
สัวสดีค่ะ
ถ้าข้อมูลที่ต้องดึง อยู่ในชีทที่ 1 และ ชีทที่ 2 ชีทที่ 3
เช่น ตารางข้อมูลลูกค้า มีลูกค้า แบบ A แบบ B และ แบบ C บันทึกแยกชีทกัน
(จำนวน แรคคอร์ดไม่เท่ากัน เอามารวมกันแล้วทำให้มีค่าว่างเกิดขึ้น)
แต่เวลาในการออกใบเสร็จค้นหารายละเอียดลูกค้าเหมือนกัน คือ ชื่อ นามสกุล ค่าบริการ ผู้ประเมิน
ใช้สูตร VLOOKUP ได้มัยค่ะ
ขอบคุณล่วงหน้าค่ะ
เราสามารถใช้ Vlookup จากหลาย ๆ ชีทได้ครับเนื่องจากว่า Excel 2007 ขึ้นไปสามารถเขียน Vlookup ซ้อนกันได้ 64 ชั้น แต่การทำเช่นนั้นถือว่าไม่กระชับ เสียเวลาคำนวณนาน ข้อมูลควรอยู่ในชีทเดียวกันเพียงแต่ต้องมีสักคอลัมน์ที่บอกได้ว่าข้อมูลนั้น ๆ เป็นแบบไหน นอกจากจะใช้ Vlookup ได้แล้วยังสะดวกในการดูข้อมูล ทำรายงาน ฯลฯ
จะลองทำดูค่ะ
รบกวนเพิ่มเติมิีกนิดนึงน่ะค่ะ
ถ้าตารางงานที่ เก๋ใช้ทุกวันนี้ (ยังไม่ได้ปรับปรุง)
ประกอบด้วย
เลขงาน/ชื่อ/นามสกุล/ประเภทงาน/ค่าบริการ/สินเชื่อ/วงเงินที่ขอ/วันรับงาน/วันส่งงาน/เบอร์โทร/ประเมิน/ตำบล/อำเภอ/จังหวัด/หมายเหตุ
ถ้าแยกตารางออกมาเป็น
ตารางลูกค้า รหัสลูกค้า/ชื่อ-นามสกุล/เบอร์โทร/ประเภทงาน/วงเงิน
ตารางสินเชือ รหัสสินเชื่อ/ชื่อ-นามสกุล/วันที่ส่ง (วันที่แบงค์ส่งให้)/วันที่ส่งงานคืนแบงค์
ตารางประเมิน รหัส/ชื่อ-นามสกุล/เบอร์โทร
ตารางธนาคาร รหัส/ชื่อธนาคาร/สาขา ( แต่ถ้าอย่าง ธนาคารกรุงไทย มีหลายสาขาละค่ะ ต้องแยกอีกตารางมัย เพราะสาขามีค่อนข้างเยอะ)
ตารางที่ตั้งทรัพย์สิน ตารางนี้ต้องอ้างอิงจากลูกค้า
ตารางใบเสร็จ
พอจะเห็นว่ามันสัมพันธ์กัน แต่ต้องเริ่มแบบไหนค่ะ
อ่านจากที่ลงในเพจ ก็เข้าใจแต่ว่าพอไปลองทำ คิดว่า Excel ที่เก๋ใช้มันเป็น Excell 2003
เลยยังคลำๆทางไปไม่ถูก 🙂
กรณีสอบถามปัญหาสามารถถามได้ที่ http://www.snasui.com เนื่องจากแนบไฟล์ตัวอย่างได้ จะได้สะดวกในการตอบครับ