การใช้ VLOOKUP เพื่อแสดงข้อมูลจากฐานข้อมูล ตอนที่2

โพสต์8 ก.ค. 2553 20:37โดยอนนท์ ศรีพิพัฒน์   [ อัปเดต 27 เม.ย. 2556 03:37 ]
จากครั้งที่แล้ว ที่ผมได้แนะนำวิธีการใช้งาน VLOOKUP ไปนั้น ถือเป็นหลักการใช้งานเ
บื้องต้น เพื่อให้สามารถแสดงข้อมูลจากฐานข้อมูลได้ แต่ในการนำไปใช้งานจริง อาจจะมีการนำไปใช้ในรูปแบบอื่นที่แตกต่างไป ผมจึงขอเสนอเทคนิค และวิธีการประยุกต์ใช้ VLOOKUP เพิ่มเติมสักเล็กน้อย ดังนี้


1. พิมพ์สูตรครั้งเดียว สามารถคัดลอกไปใช้ได้ทุกเซล

จากตัวอย่างในครั้งที่แล้ว เมื่อเราพิมพ์สูตรที่ K5 ว่า =VLOOKUP(K$4,$B$3:$F$10,2,0) และทำการคัดลอกสูตรลงมายัง K6 ถึง K8 นั้น จะเห็นว่า เราต้องมาแก้ไขสูตรในแต่ละบรรทัดใหม่ โดยเปลี่ยนเลข 2 เป็น3, 4 และ 5 ตามลำดับ ถ้าหากจำนวนเซลมีมากกว่านี้ล่ะ ก็ต้องแก้ไขสูตรอีกหลายครั้ง


รูปที่ 7 ตัวอย่างผลลัพธ์ที่เรียงต่อเนื่องกันลงมา


ดังนั้น ถ้าข้อมูลเป็นลักษณะเรียงต่อเนื่องกันลงมา ขอย้ำนะครับว่า "เรียงต่อเนื่องกันลงมา" ดังในรูปที่ 7 เราสามารถแก้ไขสูตรที่ K5 เสียใหม่ เพื่อให้สามารถคัดลอกไป K6 ถึง K8 ได้ โดยไม่ต้องไปแก้ไขสูตรอีก ดังนี้

1.1) เปลี่ยนสูตรที่ K5 เป็น =VLOOKUP(K$4,$B$3:$F$10,ROW()-3,0) เสร็จแล้วลองคัดลอกสูตรลงมายัง K6 ถึง K8 จะเห็นว่า ได้ผลลัพธ์ออกมาอัตโนมัติ โดยไม่ต้องมาแก้ไขสูตรอีก (ยกเว้น K8 เพราะเราใช้ VLOOKUP ซ้อน VLOOKUP ซึ่งสูตรไม่เหมือนกับเซลอื่น)

ทั้งนี้เพราะ ฟังก์ชัน ROW() จะส่งค่าเลขบรรทัดนั้นๆ ออกมา ซึ่งถ้าเรากำลังทำงานในบรรทัดที่ 5 ผลลัพธ์ที่ได้จากฟังก์ชัน ROW() ก็คือ 5 แต่ในเซล K5 นั้น เราต้องการเลข 2 ไปใส่ในสูตร ผมจึงใช้ ROW()-3

ดังนั้น เมื่อสูตรถูกคัดลอกไปยังบรรทัดถัดลงมา เลขที่แสดงบรรทัดที่ได้จาก ROW() ก็จะเปลี่ยนไปอัตโนมัติ พอนำ ROW()-3 ผลลัพธ์จึงเปลี่ยนเป็น 3, 4 และ 5 ตามลำดับ โดยอัตโนมัติ

หมายเหตุ : วิธีการนี้ใช้ได้เฉพาะกรณีที่ ต้องการแสดงข้อมูลเรียงต่อเนื่องกันลงมาเท่านั้น


1.2) เนื่องจากหัวข้อใน J5:J8 เป็นข้อความที่เราคัดลอกมาจาก B2:F2 ข้อความจึงเหมือนกันทุกประการ เราจึงสามารถใช้วิธีเปรียบเทียบ ว่าหัวข้อในคอลัมน์ J นี้ ไปตรงกับลำดับที่เท่าไรในช่วง B2:F2 โดยใช้ฟังก์ชัน MATCH ดังนั้นที่ K5 จึงเขียนสูตรใหม่ได้ ดังนี้
=VLOOKUP($K$4,$B$3:$F$10,MATCH(J5,$B$2:$F$2,0),0) 
เสร็จแล้วลองคัดลอกสูตรลงมายัง K6 ถึง K8 จะเห็นว่า ได้ผลลัพธ์ออกมาอัตโนมัติเช่นกัน


รูปที่ 8 ตัวอย่างการวางข้อมูลผลลัพธ์รูปแบบอื่น


วิธีการนี้มีข้อดีกว่าการใช้ ROW() ตรงที่ แม้ข้อมูลจะไม่เรียงต่อเนื่องกันลงมา จะเว้นบรรทัด หรือจะวางข้อมูลในแนวอื่น ดังในรูปที่ 8 สูตรนี้ก็ยังใช้งานได้ แต่มีข้อแม้ว่า ชื่อหัวข้อของผลลัพธ์ จะต้องเหมือนกันกับหัวตารางฐานข้อมูล


รูปที่ 9 ชื่อหัวข้อของผลลัพธ์จะต้องเหมือนกับหัวตารางฐานข้อมูล


2. การนำผลลัพธ์ที่ได้จาก VLOOKUP มาเชื่อมต่อกัน

ในบางกรณี ที่เราไม่ต้องการแสดงข้อมูล ในลักษณะที่เป็นหัวข้อใครหัวข้อมัน แต่ต้องการให้ข้อมูลเชื่อมต่อกันไปเลย เช่น คำนำหน้า+ชื่อ+เว้นวรรคสัก 2 เคาะ+นามสกุล อย่างนี้เป็นต้น ก็สามารถเขียนสูตรได้ดังนี้
=VLOOKUP(K$4,$B$3:$F$10,2,0)&VLOOKUP(K$4,$B$3:$F$10,3,0) &" "&VLOOKUP(K$4,$B$3:$F$10,4,0)


รูปที่ 10 ตัวอย่างการนำผลลัพธ์ที่ได้จาก VLOOKUP มาเชื่อมต่อกัน



3. ถ้ายังไม่ใส่รหัส ก็ให้แสดงแบบฟอร์มเปล่าๆ

จากทุกสูตรที่แนะนำมาแล้วในเบื้องต้น หากคุณลองลบรหัสที่ป้อนใน K4 ออกไป จะเห็นว่าในช่องต่างๆ ที่เราเรียกใช้สูตร VLOOKUP จะแสดงค่าผิดพลาด #N/A ออกมาทุกเซล ทำให้ดูเกะกะสายตา และทำให้แบบฟอร์มดังกล่าวไม่สวยงาม


รูปที่ 11 ตัวอย่างค่าผิดพลาดในกรณีที่ยังไม่ใส่รหัสที่ K4


หากไม่ต้องการให้แสดงค่าผิดพลาดดังกล่าว ให้เอาฟังก์ชัน IF เข้ามาตรวจสอบก่อนว่า มีการป้อนรหัสที่ K4 หรือไม่ ถ้ายังไม่ป้อน ก็ไม่ต้องแสดงค่า แต่ถ้าป้อนแล้ว จึงค่อยแสดงค่าตาม VLOOKUP โดยเปลี่ยนสูตรในแต่ละเซล ดังนี้
=IF(ISBLANK($K$4),"",ตามด้วยสูตรเดิม) หรือ
=IF($K$4="","",ตามด้วยสูตรเดิม)

--------------------


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