VLOOKUP แบบหลายเงื่อนไขทำไง? ง่ายนิดเดียว!

VLOOKUP แบบหลายเงื่อนไขทำไง? ง่ายนิดเดียว! 1
10 ข้อคิดจากเกมออนไลน์ ใช้พัฒนาความก้าวหน้าทักษะ Excel
เวลาของคุณมีค่าเท่าไหร่? สอนวิเคราะห์ด้วย Data Table เบื้องต้น

มีหลายคนถามผมมาบ่อยมาก ว่าถ้าเราอยากจะ VLOOKUP หลายเงื่อนไข (Lookup_Value มี 2 ช่องขึ้นไป) ต้องทำยังไงดี? ตัวผมเองก็ดันไม่ได้เขียนตัวอย่างนี้ไว้ในหนังสือซะด้วยสิ ก็เลยขอมาเขียนในนี้ให้อ่านกันฟรีๆ เลยแล้วกัน!

*สำหรับคนที่อยากรู้วิธี VLOOKUP คำเดียว แต่ได้ผลลัพธ์กลับมาหลายค่า ให้ดูตาม link นี้แทนครับ

VLOOKUP มี Lookup_value หลายตัวได้ด้วยเหรอ?

ผมจะบอกว่า ไอ้ lookup_value ของ VLOOKUP เนี่ย มันมีได้แค่ตัวเดียวแหละครับ
ก็มันมี Argument เดียวไงจำได้มั้ย?
มันเขียนว่า =VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

เห็นมั้ยครับว่ามีแค่ตัวเดียว แล้วเราจะใส่เข้าไปหลายเงื่อนไขได้ยังไง?

คำตอบก็คือ…มันมี Trick ครับ ถ้าคิดให้ดีๆ

เราสามารถเอาค่าที่เราต้องการจะ Lookup ที่มีหลายๆ เงื่อนไขจับมัดเป็น Lookup_Value ก้อนเดียวก็ได้นี่นา

ถ้ารู้แบบนี้แล้ว จะกลัวอะไรครับ? มาลองดูตัวอย่างจริงกันเลยดีกว่า!

สมมติเรามีข้อมูลแบบนี้ครับ

vlookup-multiple-1fix

เราต้องการเอาข้อมูลอ้างอิงข้างบน มาสรุปเป็นตารางข้างล่าง  ซึ่งจะเห็นว่าเราไม่สามารถใช้ VLOOKUP ค่า A B C ตรงๆ ได้ เพราะการ Lookup แบบ Exact Match ถ้าเจอค่าซ้ำกันมันจะได้ค่าแรกสุดกลับมาเสมอ

วิธีแก้ก็คือ ต้องทำให้ค่าที่ Lookup ไม่ซ้ำกันนั่นเอง โดยการจับค่ามามัดรวมกันเป็นค่าเดียว เช่น เอา สินค้า กับ คนขายมาเชื่อมกัน

ซึ่งวิธีเชื่อมเราก็ใช้เครื่องหมาย & มาเชื่อมง่ายๆ นี่แหละครับ แต่ที่สำคัญต้องเชื่อมแล้วไม่ซ้ำกับบรรทัดอื่นนะครับ

vlookup-multiple-2

ข้อควรระวัง 1

แต่วิธีนี้อาจมีความเสี่ยงตรงที่ ถ้าค่าที่เราเอามาเชื่อมกันแล้วมันอาจไปซ้ำกับค่าอื่นได้ เช่น

  • เชื่อม AA กับ ข ==> AAข
  • เชื่อม A กับ Aข ==> AAข
    ซึ่งออกมาเหมือนกันทั้งที่ตั้งต้นคนละอันเลย!

ดังนั้นผมแนะนำให้ตอนเชื่อมตั่นด้วยสัญลักษณ์แปลกๆ เช่น | เสมอ ซึ่งป้องกันค่าไม่ให้ซ้ำกันโดยไม่ตั้งใจได้ เช่น

  • เชื่อม AA กับ ข ==> AA|ข
  • เชื่อม A กับ Aข ==> A|Aข
    ออกมาเป็นคนละอันกัน ซึ่งถูกต้อง!

ดังนั้นคอลัมน์พิเศษของผมจึงออกมาเป็นแบบนี้

vlookup-multiple-3

ทีนี้เราก็สามารถ VLookup ได้แล้วล่ะครับ

=VLOOKUP($C13&”|”&D$12,$B$2:$E$9,4,0)

ซึ่ง $C13&”|”&D$12 ก็คือ สินค้า|คนขาย นั่นเอง

vlookup-multiple-4

ตัวที่ออกมาเป็น #N/A แสดงว่าไม่อยู่ในตารางข้างบน ซึ่งเราก็สามารถแปลงให้เป็น 0 ได้ โดยการใช้ IFERROR ซ้อนไปให้แสดง 0 แทน เป็นต้น

vlookup-multiple-5

แค่นี้ก็สามารถได้ผลลัพธ์ตามที่ต้องการแล้วครับ

อย่าลืมนะครับ หลักการมีอยู่นิดเดียว คือ ให้จับเงื่อนไขหลายๆ ตัวมามัดกันเป็นก้อนเดียว และเป็นก้อนที่ Unique แบบไม่ซ้ำกันกับบรรทัดอื่น นั่นเองครับ

เทคนิคเสริมและข้อควรระวัง! กรณีข้อมูลที่สรุปเป็นตัวเลข

ขอบคุณ คุณ Songsak YO Kitthawonarcheep มากครับ ที่เข้ามาเตือนในเพจ Facebook เกี่ยวกับตัวอย่างข้างบน ซึ่งอาจผิดได้ในบางกรณี

กรณีที่ข้อมูลที่ต้องการนำมาสรุปผลเป็นข้อมูลตัวเลข หรือบางทีข้อมูลดิบอาจมี Lookup_Value หลายบรรทัดซ้ำกัน เช่น มีสินค้า A กับ คนขาย นาย ก คู่กันหลายบรรทัด (ทำให้ค่า Lookup_Value ไม่ใช่ค่า unique อย่างแท้จริง) การใช้ VLOOKUP ทำให้ได้มาแต่ค่าแรก ซึ่งจะทำให้ผลสรุปผิดได้

วิธีที่ดีกว่าในกรณีที่ข้อมูลเป็นตัวเลขแบบนี้ คือ การใช้พวก SUMIF มาช่วยแทน (คิดเหมือน Pivot Table) เช่นตามรูปนี้ครับ

vlookup-multiple-6

สังเกตว่าได้ค่าเท่ากับวิธี VLOOKUP ข้างบนเป๊ะเลย (ถ้าค่า Lookup_Value ซ้ำกันหลายบรรทัด วิธีนี้จะถูกต้องกว่า เพราะ VLOOKUP จะได้แต่ค่าบนสุดทำให้ผลออกมาน้อยเกินจริง) คำนวณเร็วกว่า แถมไม่ต้องมาดัก Error ด้วย เจ๋งจริงๆ ครับ

เพียงแต่วิธีนี้มีข้อจำกัด คือ ใช้ได้เฉพาะกับข้อมูลที่เป็นตัวเลขเท่านั้น ถ้าข้อมูลเป็น Text ต้องใช้พวก VLOOKUP มาช่วย แล้วถ้ามี Text ซ้ำกันหลายบรรทัด ก็ต้องพยายามทำให้ไม่ซ้ำแหละครับ ต้องเพิ่มคอลัมน์เพื่อให้มันไม่ซ้ำให้ได้ แค่นั้นเอง

........

ใครที่ชื่นชอบบทความนี้และเห็นว่ามีประโยชน์ ช่วยบอกต่อเพื่อนๆ ของคุณด้วยนะครับ
ยิ่งเกิดประโยชน์กับคนเยอะๆ ผู้เขียนก็ยิ่งดีใจครับ คนแชร์ก็ได้ร่วมสร้างประโยชน์ด้วยนะ ^^

อย่าลืมกดติดตามเทพเอ็กเซลได้ที่ Facebook.com/ThepExcel
และสามารถติดตามคลิปวีดีโอเจ๋งๆ ได้ที่ YouTube Channel ของ Thep Excel ครับ


10 ข้อคิดจากเกมออนไลน์ ใช้พัฒนาความก้าวหน้าทักษะ Excel
เวลาของคุณมีค่าเท่าไหร่? สอนวิเคราะห์ด้วย Data Table เบื้องต้น

Posted on: November 5, 2015
Tags: ,

Leave a Reply

Your email address will not be published. Required fields are marked *