การใช้ 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 ครับ

backslash

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

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



Create Date : 03 พฤษภาคม 2551
Last Update : 30 มกราคม 2552 21:41:58 น.
Counter : 29411 Pageviews.

19 comments
  
แวะมารับเอาความรู้คะ

โดย: ภูริดา วันที่: 3 พฤษภาคม 2551 เวลา:23:42:55 น.
  
แวะมาคุยจ๊ะ เอาความรู้ด้วย อืมแต่มันอยากนะให้โอพีไปเล่นสกีบนเขายังง่ายกว่าเอ้อออ
โดย: Opey วันที่: 4 พฤษภาคม 2551 เวลา:3:09:38 น.
  



โดย: Opey วันที่: 4 พฤษภาคม 2551 เวลา:8:31:21 น.
  
ขอบคุณสำหรับความรู้ครับ ดีมากเลยครับ ผมกำลังหาวิธีเอา #N/A ออกพอดี
โดย: Supachate IP: 66.207.48.50 วันที่: 4 พฤษภาคม 2551 เวลา:10:38:32 น.
  
สวัสดีครับ..ครูเอก

ขอบคุณมากนะคับที่เข้าไปติ ชม บล็อคของผม

แต่...ผมงงครับ ทำไมพื้นหลังผมถึงดูยาก
พื้นหลังของผมสีขาวล้วนนะครับ...แล้วจะดูยากยังไง

ตอนนี้สงสัยมากครับ..ต้องการคำชี้แจงด่วน
ไม่งั้นนอนไม่หลับ อิอิ
โดย: หล่อจริงไม่ได้โกหก วันที่: 5 พฤษภาคม 2551 เวลา:13:17:09 น.
  
เป็นแหล่งขุมทรัพย์ทางปัญญามากๆๆค่ะ
โดย: ต้นหญ้าเองค่ะ IP: 125.25.26.236 วันที่: 5 พฤษภาคม 2551 เวลา:15:15:52 น.
  
ตอบคุณหล่อจริงไม่ได้โกหก

กลัวท่านจะนอนไม่หลับ เลยรีบมาตอบ
ผมใช้ Opera นะ (ไม่รู้ว่าเกี่ยวกันมั๊ย) แต่เวลาเข้าไปอ่านบล๊อกของท่าน จะเห็นแต่ภาพพื้นหลัง ที่เป็นรูปนักบาส เต็มไปหมด เวลาจะอ่านต้องกดแป้น Ctrl+A ก่อน แล้วจึงค่อยอ่าน

ลองคลิกดูที่ลิงค์รูปด้านล่าง นี่คือหน้าบล๊อกของคุณ ที่ผมมองเห็นเวลาเข้าไปอ่านครับ

//photos1.hi5.com/0035/027/364/jvI3eF027364-02.jpg
โดย: ครูเอก วันที่: 5 พฤษภาคม 2551 เวลา:15:26:13 น.
  
ขอบคุณคุณครูที่ไปเยี่ยมน่ะค่ะ....บล็อคครูมีประโยชน์มากเลยค่ะ ชอบเรียนรู้เกี่ยวกับ excel ค่ะ นี่ถ้าทำงานอยู่คงจะมาเก็บความรู้จากคุณครูไปใช้
โดย: นา (nakamuk ) วันที่: 5 พฤษภาคม 2551 เวลา:18:03:16 น.
  
ขอบคุณมากๆค่ะ ^.^
โดย: creamini IP: 164.144.232.10 วันที่: 26 มิถุนายน 2551 เวลา:15:58:27 น.
  
ขอบคุณมากๆค่ะ ^.^
โดย: creamini IP: 164.144.232.10 วันที่: 26 มิถุนายน 2551 เวลา:15:58:35 น.
  
ผมหาวิธีทำมานานครับ เพิ่งมาเจอที่นี่
ขอขอบคุณอาจารย์มากๆ นะครับ
โดย: Kob7110 IP: 125.25.37.194 วันที่: 24 กรกฎาคม 2551 เวลา:22:33:40 น.
  
อยากทราบว่าถ้าเราใช้ Vlookup แต่ฐานข้อมูลไม่ได้อยู่ใน sheet หน้าเดียวกัน จะต้องใส่สูตรอย่างไร
ถ้าฐานข้อมูลที่อยู่หน้าเดียวกันใช้ =VLOOKUP($B$12,$B$21:$E$24,2,0)
โดย: cherry IP: 117.47.59.232 วันที่: 13 กันยายน 2551 เวลา:16:55:27 น.
  
สวัสดีครับ คุณ cherry

ผมเขียนไว้แล้วในบทความข้างต้น ข้อ 4. การดึงข้อมูลต่างชีท หรือต่างไฟล์ กรุณาไปอ่านดูครับ อยู่ท้ายๆ บทความน่ะครับ
โดย: ครูเอก วันที่: 13 กันยายน 2551 เวลา:18:37:51 น.
  
จะทำvlookup ในชีตเดียวกันแต่จะทำแบบใส่เซลนี้ที่ตั้งตนไว้เช่นตั้งต้น a5 แต่ข้อความในa5 เหมือนกับข้อความในg5 ก็จะให้แสดงใน g5 เหมือนกัน ปล.แล้วจะนำข้อมูลใน g5 ไปคำนวนได้ไหม //www.bimon46@gmail.com จะขอบพระคุณอย่างสูง
โดย: kookai IP: 118.172.196.207 วันที่: 30 ตุลาคม 2551 เวลา:0:16:05 น.
  
ถึงคุณ kookai
เอ่อ...ผมไม่เข้าใจคำถามครับ
โดย: ครูเอก วันที่: 1 พฤศจิกายน 2551 เวลา:9:56:25 น.
  
ขอบคุณครับอาจารย์
โดย: jaspalo IP: 124.121.107.183 วันที่: 23 ธันวาคม 2551 เวลา:15:38:48 น.
  
ขอบคุณมากค่ะอาจารย์
โดย: ammzii IP: 58.10.167.197 วันที่: 16 มิถุนายน 2554 เวลา:15:50:55 น.
  
ขอบคุณมากๆเลยครับ กำลังศึกษาเรื่อง Vlookup อยู่ ตอนนี้ทำข้าม sheet ได้แล้ว สงสัยอยู่พอดีว่าข้ามไฟล์ได้หรือเปล่า รอดแล้ว^^
โดย: พรอนันต์ IP: 118.172.40.51 วันที่: 7 มกราคม 2556 เวลา:15:30:36 น.
  
หากใช้วิธีนำข้อมูลจากคนละชีท ไฟล์เดียวกันแล้ว
เราจะทำยังไง หากต้องการใช้สูตรนี้ในบรรทัดถัดๆมา แต่ให้เปลี่ยนชื่อชีทได้ตามลำดับตอนลากสูตรลงมาคะ ตอนนี้เราต้องเปลี่ยนชื่อชีทแบบแมนนอลคะ
โดย: รบกวนสอบถามหน่อยคะ IP: 171.6.244.65 วันที่: 16 พฤษภาคม 2561 เวลา:13:33:41 น.
ชื่อ :
Comment :
 *ใช้ code html ตกแต่งข้อความได้เฉพาะสมาชิก
 

Samroeng.BlogGang.com

ครูเอก
Location :
กรุงเทพฯ  Thailand

[ดู Profile ทั้งหมด]
 ผู้ติดตามบล็อก : 112 คน [?]

บทความทั้งหมด