การใช้ Vlookup

ฟังก์ชั่น Vlookup เป็นฟังก์ชั่นหนึ่งที่ใช้บ่อยมาก แต่ผู้ที่ใช้ส่วนมากก็ยังไม่เข้าใจว่าทำงานอย่างไร อ่านใน Help แล้วก็ยังไม่เคลียร์ เมื่อเกิดปัญหาก็เลยไม่สามารถแก้ไขได้

มาดูส่วนประกอบหรือไวยากรณ์ของ Vlookup กันก่อนครับ Vlookup มีไวยากรณ์ดังนี้

Vlookup(lookup_value,table_array,col_index_num,[range_lookup])

หรือแปลตามแบบฉบับของผมเพื่อให้ง่ายต่อการเข้าใจ Smile with tongue out

Vlookup(ค่าที่ต้องการค้นหา, ตารางที่บรรจุค่าที่ต้องการค้นหา, คอลัมน์ที่ต้องการแสดงผล, รูปแบบการค้นหา)

จากไวยากรณ์ด้านบนแปลโดยรวมว่าให้นำค่าที่ต้องการค้นหา ไปค้นในคอลัมน์แรกของตารางที่บรรจุค่าที่ต้องการค้นหา แล้วนำค่าในคอลัมน์ทีต้องการแสดงผลมาแสดง

Winking smile ซึ่งจะเห็นว่า Vlookup มีส่วนประกอบ 4 ส่วนครับ คือ

  1. ค่าที่ต้องการค้นหา เป็นค่าใด ๆ ก็ได้ทั้งนั้น
  2. ตารางที่บรรจุค่าที่ต้องการค้นหา แน่นอนครับว่าต้องเป็นตารางและคอลัมน์แรกของตารางต้องมีค่าที่ต้องการค้นหาในข้อ 1. อยู่ด้วย (แต่ไม่เสมอไป ขึ้นอยู่กับรูปแบบการค้นหาซึ่งเป็นส่วนประกอบสุดท้ายของฟังก์ชั่น)
    ตารางที่บรรจุค่าที่ต้องการค้นหา เป็นตารางที่มีคอลัมน์เดียวได้หรือไม่ คำตอบคือ ได้ นั่นคือมีแต่เฉพาะค่าที่ต้องการค้นหาเท่านั้น
  3. คอลัมน์ที่ต้องการแสดงผล หมายถึง ลำดับของคอลัมน์ในตารางที่บรรจุผลลัพธ์(ปกติคำว่าตารางมักจะมากกว่า 1 คอลัมน์และคอลัมน์ผลลัพธ์เป็นคอลัมน์ใด ๆ ก็ได้ในตารางแล้วแต่ความต้องการ) และที่สำคัญคอลัมน์ที่บรรจุค่าที่ต้องการค้นหานั้นต้องนับเป็นคอลัมน์แรกหรือคอลัมน์ที่ 1 ของตารางเสมอ
  4. รูปแบบการค้นหา มี แค่ 2 รูปแบบเท่านั้น คือ หาค่าแบบตรงตัว และ หาค่าแบบใกล้เคียง

การหาค่าแบบตรงตัว จะใช้ False หรือ 0 ในสูตร การหาค่าแบบใกล้เคียง จะใช้ True หรือ 1 หรือ ปล่อยว่าง

Smile รูปแบบสูตรหาค่าตรงตัว

=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)

Open-mouthed smile รูปแบบสูตรหาค่าใกล้เคียง

=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 แบบตรงตัวและแบบใกล้เคียง

Vlookup

Vookup with exact and approximate match.

 

แบบตรงตัวแบบใกล้เคียง
เป็นการ Lookup แบบตรงตัว หากเจอค่าที่เท่ากับค่าที่ต้องการค้นหาจะแสดงค่าทีเจอ หากไม่เจอจะแสดงค่า #N/A
เป็นการ Lookup แบบใกล้เคียง หากเจอค่าที่น้อยกว่าหรือเท่ากับค่าที่ต้องการค้นหาจะแสดงค่าทีเจอ หากไม่เจอจะแสดงค่า #N/A

Revised: January 28, 2017 at 11:58

10 Responses to การใช้ Vlookup

  1. ขอบคุณมากครับกำลังมีปัญหาเรื่องการใช้งานพอดีเลยครับผม ขอบคุณครับ

  2. ครับผม ยินดีที่ช่วยไ้ด้ครับ

  3. Anonymous says:

    าlถ้า ต้องการหาว่า ถ้าค่าหาค่่าแกน X แล้วหาแกน Y ด้วย สามารถใช้ vlookupซ้อนHlookup ได้ไหม หรือมี function อะไรที่ใช้ง่ายกว่า

  4. สามารถใช้ฟังก์ชั่นในฟอร์มด้านล่างได้ครับ =Index(a,Match(b,c,0),Match(d,e,0))เพื่อความสะดวกในการถามตอบ สามารถถามได้ที่ http://www.snasui.com/ สามารถแนบภาพ แนบไฟล์ได้ แต่ต้องเป็นสมาชิกซึ่งฟรีครับ

  5. AA1982 says:

    ในกรณีที่เราต้องการหาข้อมูลที่ตรงในหลาย ๆ ชีท เช่น ชื่อคนที่อยู่ในแต่ละชีท(มีชื่อที่เหมือนกันในแต่ละชีท) แล้วให้แสดงผลการหาที่ชีทใหม่น่ะค่ะ ทำอย่างไรคะ

  6. ช่วยแนบแฟ้มปัญหาไปที่ http://www.snasui.com/ เพื่อสะดวกในการถามตอบ จะช่วยดูให้ครับ

  7. jarunee says:

    สัวสดีค่ะ

    ถ้าข้อมูลที่ต้องดึง อยู่ในชีทที่ 1 และ ชีทที่ 2 ชีทที่ 3
    เช่น ตารางข้อมูลลูกค้า มีลูกค้า แบบ A แบบ B และ แบบ C บันทึกแยกชีทกัน
    (จำนวน แรคคอร์ดไม่เท่ากัน เอามารวมกันแล้วทำให้มีค่าว่างเกิดขึ้น)

    แต่เวลาในการออกใบเสร็จค้นหารายละเอียดลูกค้าเหมือนกัน คือ ชื่อ นามสกุล ค่าบริการ ผู้ประเมิน
    ใช้สูตร VLOOKUP ได้มัยค่ะ

    ขอบคุณล่วงหน้าค่ะ

    • snasui says:

      เราสามารถใช้ Vlookup จากหลาย ๆ ชีทได้ครับเนื่องจากว่า Excel 2007 ขึ้นไปสามารถเขียน Vlookup ซ้อนกันได้ 64 ชั้น แต่การทำเช่นนั้นถือว่าไม่กระชับ เสียเวลาคำนวณนาน ข้อมูลควรอยู่ในชีทเดียวกันเพียงแต่ต้องมีสักคอลัมน์ที่บอกได้ว่าข้อมูลนั้น ๆ เป็นแบบไหน นอกจากจะใช้ Vlookup ได้แล้วยังสะดวกในการดูข้อมูล ทำรายงาน ฯลฯ

      • jarunee says:

        จะลองทำดูค่ะ

        รบกวนเพิ่มเติมิีกนิดนึงน่ะค่ะ
        ถ้าตารางงานที่ เก๋ใช้ทุกวันนี้ (ยังไม่ได้ปรับปรุง)
        ประกอบด้วย
        เลขงาน/ชื่อ/นามสกุล/ประเภทงาน/ค่าบริการ/สินเชื่อ/วงเงินที่ขอ/วันรับงาน/วันส่งงาน/เบอร์โทร/ประเมิน/ตำบล/อำเภอ/จังหวัด/หมายเหตุ

        ถ้าแยกตารางออกมาเป็น
        ตารางลูกค้า รหัสลูกค้า/ชื่อ-นามสกุล/เบอร์โทร/ประเภทงาน/วงเงิน
        ตารางสินเชือ รหัสสินเชื่อ/ชื่อ-นามสกุล/วันที่ส่ง (วันที่แบงค์ส่งให้)/วันที่ส่งงานคืนแบงค์
        ตารางประเมิน รหัส/ชื่อ-นามสกุล/เบอร์โทร
        ตารางธนาคาร รหัส/ชื่อธนาคาร/สาขา ( แต่ถ้าอย่าง ธนาคารกรุงไทย มีหลายสาขาละค่ะ ต้องแยกอีกตารางมัย เพราะสาขามีค่อนข้างเยอะ)
        ตารางที่ตั้งทรัพย์สิน ตารางนี้ต้องอ้างอิงจากลูกค้า
        ตารางใบเสร็จ

        พอจะเห็นว่ามันสัมพันธ์กัน แต่ต้องเริ่มแบบไหนค่ะ
        อ่านจากที่ลงในเพจ ก็เข้าใจแต่ว่าพอไปลองทำ คิดว่า Excel ที่เก๋ใช้มันเป็น Excell 2003
        เลยยังคลำๆทางไปไม่ถูก 🙂

  8. snasui says:

    กรณีสอบถามปัญหาสามารถถามได้ที่ http://www.snasui.com เนื่องจากแนบไฟล์ตัวอย่างได้ จะได้สะดวกในการตอบครับ