การใช้ VLOOKUP เพื่อแสดงข้อมูลจากฐานข้อมูล ตอนที่2 จากครั้งที่แล้ว ที่ผมได้แนะนำวิธีการใช้งาน VLOOKUP ไปนั้น ถือเป็นหลักการใช้งานเบื้องต้น เพื่อให้สามารถแสดงข้อมูลจากฐานข้อมูลได้ แต่ในการนำไปใช้งานจริง อาจจะมีการนำไปใช้ในรูปแบบอื่นที่แตกต่างไป ผมจึงขอเสนอเทคนิค และวิธีการประยุกต์ใช้ VLOOKUP เพิ่มเติมสักเล็กน้อย ดังนี้ 1. พิมพ์สูตรครั้งเดียว สามารถคัดลอกไปใช้ได้ทุกเซล จากตัวอย่างในครั้งที่แล้ว เมื่อเราพิมพ์สูตรที่ K5 ว่า =VLOOKUP(K$4,$B$3:$F$10,2,0) และทำการคัดลอกสูตรลงมายัง K6 ถึง K8 นั้น จะเห็นว่า เราต้องมาแก้ไขสูตรในแต่ละบรรทัดใหม่ โดยเปลี่ยนเลข 2 เป็น 3, 4 และ 5 ตามลำดับ ถ้าหากจำนวนเซลมีมากกว่านี้ล่ะ ก็ต้องแก้ไขสูตรอีกหลายครั้ง รูปที่ 7 ตัวอย่างผลลัพธ์ที่เรียงต่อเนื่องกันลงมา ดังนั้น ถ้าข้อมูลเป็นลักษณะเรียงต่อเนื่องกันลงมา ขอย้ำนะครับว่า "เรียงต่อเนื่องกันลงมา" ดังในรูปที่ 6 เราสามารถแก้ไขสูตรที่ 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 จะเห็นว่า ได้ผลลัพธ์ออกมาอัตโนมัติเช่นกัน วิธีการนี้มีข้อดีกว่าการใช้ ROW() ตรงที่ แม้ข้อมูลจะไม่เรียงต่อเนื่องกันลงมา จะเว้นบรรทัด หรือจะวางข้อมูลในแนวอื่น ดังในรูปที่ 8 สูตรนี้ก็ยังใช้งานได้ แต่มีข้อแม้ว่า ชื่อหัวข้อของผลลัพธ์ จะต้องเหมือนกันกับหัวตารางฐานข้อมูล รูปที่ 8 ตัวอย่างการวางข้อมูลผลลัพธ์รูปแบบอื่น 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) รูปที่ 9 ตัวอย่างการนำผลลัพธ์ที่ได้จาก VLOOKUP มาเชื่อมต่อกัน 3. ถ้ายังไม่ใส่รหัส ก็ให้แสดงแบบฟอร์มเปล่าๆ จากทุกสูตรที่แนะนำมาแล้วในเบื้องต้น หากคุณลองลบรหัสที่ป้อนใน K4 ออกไป จะเห็นว่าในช่องต่างๆ ที่เราเรียกใช้สูตร VLOOKUP จะแสดงค่าผิดพลาด #N/A ออกมาทุกเซล ทำให้ดูเกะกะสายตา และทำให้แบบฟอร์มดังกล่าวไม่สวยงาม รูปที่ 10 ตัวอย่างค่าผิดพลาดในกรณีที่ยังไม่ใส่รหัสที่ K4 หากไม่ต้องการให้แสดงค่าผิดพลาดดังกล่าว ให้เอาฟังก์ชัน IF เข้ามาตรวจสอบก่อนว่า มีการป้อนรหัสที่ K4 หรือไม่ ถ้ายังไม่ป้อน ก็ไม่ต้องแสดงค่า แต่ถ้าป้อนแล้ว จึงค่อยแสดงค่าตาม VLOOKUP โดยเปลี่ยนสูตรในแต่ละเซล ดังนี้ =IF(ISBLANK($K$4),"",ตามด้วยสูตรเดิม) หรือ =IF($K$4="","",ตามด้วยสูตรเดิม) 4. การดึงข้อมูลต่างชีท หรือต่างไฟล์ จริงๆ แล้วก็ไม่มีอะไรมากหรอกครับ ถ้าเป็นการดึงข้อมูลต่างชีท ต้องใส่ชื่อชีทด้วย หรือถ้าดึงข้อมูลคนละไฟล์ ก็ต้องใส่ชื่อไฟล์ด้วย เช่น 4.1 กรณีข้อมูลอยู่ในชีทเดียวกัน =VLOOKUP(K$4,$B$3:$F$10,2,0) 4.2 กรณีข้อมูลอยู่คนละชีท แต่ไฟล์เดียวกัน =VLOOKUP(K$4,Sheet1!$B$3:$F$10,2,0) 4.3 กรณีข้อมูลอยู่คนละไฟล์ =VLOOKUP(K$4,[Book2.xls]Sheet1!$B$3:$F$10,2,0) 4.4 กรณีไฟล์ข้อมูลอยู่คนละโฟลเดอร์ หรือคนละไดรว์ =VLOOKUP(K$4,'D:|My Documents|[Book2.xls]Sheet1'!$B$3:$F$10,2,0) หมายเหตุ : เครื่องหมาย | ใช้แทนเครื่องหมาย backslash ครับ -------------------- ที่แนะนำมาทั้งหมดนี้ ก็เป็นเกร็ดเล็กๆ น้อยๆ เกี่ยวกับการประยุกต์ใช้ VLOOKUP เพื่อแสดงข้อมูลจากตารางฐานข้อมูล หวังว่าคงจะเป็นประโยชน์กับผู้สนใจ ไม่มากก็น้อยนะครับ |
บทความทั้งหมด
|
ขอบคุณมากนะคับที่เข้าไปติ ชม บล็อคของผม
แต่...ผมงงครับ ทำไมพื้นหลังผมถึงดูยาก
พื้นหลังของผมสีขาวล้วนนะครับ...แล้วจะดูยากยังไง
ตอนนี้สงสัยมากครับ..ต้องการคำชี้แจงด่วน
ไม่งั้นนอนไม่หลับ อิอิ
กลัวท่านจะนอนไม่หลับ เลยรีบมาตอบ
ผมใช้ Opera นะ (ไม่รู้ว่าเกี่ยวกันมั๊ย) แต่เวลาเข้าไปอ่านบล๊อกของท่าน จะเห็นแต่ภาพพื้นหลัง ที่เป็นรูปนักบาส เต็มไปหมด เวลาจะอ่านต้องกดแป้น Ctrl+A ก่อน แล้วจึงค่อยอ่าน
ลองคลิกดูที่ลิงค์รูปด้านล่าง นี่คือหน้าบล๊อกของคุณ ที่ผมมองเห็นเวลาเข้าไปอ่านครับ
//photos1.hi5.com/0035/027/364/jvI3eF027364-02.jpg
ขอขอบคุณอาจารย์มากๆ นะครับ
ถ้าฐานข้อมูลที่อยู่หน้าเดียวกันใช้ =VLOOKUP($B$12,$B$21:$E$24,2,0)
ผมเขียนไว้แล้วในบทความข้างต้น ข้อ 4. การดึงข้อมูลต่างชีท หรือต่างไฟล์ กรุณาไปอ่านดูครับ อยู่ท้ายๆ บทความน่ะครับ
เอ่อ...ผมไม่เข้าใจคำถามครับ
เราจะทำยังไง หากต้องการใช้สูตรนี้ในบรรทัดถัดๆมา แต่ให้เปลี่ยนชื่อชีทได้ตามลำดับตอนลากสูตรลงมาคะ ตอนนี้เราต้องเปลี่ยนชื่อชีทแบบแมนนอลคะ