แม้หลักการบันทึกข้อมูลที่ดีควรเก็บข้อมูลเรื่องเดียวกันไว้ในตารางเดียวกัน เวลาจะแยกแยะข้อมูลตามกลุ่มรายการก็สามารถใช้คำสั่ง Filter เพื่อเลือกแสดงข้อมูลแต่ละกลุ่มได้ง่าย แต่ก็ยังพบเสมอว่าบางครั้งก็จำเป็นต้องแยกบันทึกข้อมูลออกเป็นหลายตารางซึ่งอาจแยกเก็บไว้ในชีทหลายชีทอีกต่างหาก ทำให้เมื่อต้องการดึงข้อมูลมาใช้ต้องประสบปัญหาถึง 2 ชั้น ชั้นแรกต้องหาทางดึงข้อมูลจากต่างต่างตารางต่างพื้นที่กันมาใช้ ชั้นที่สองถ้าแยกเก็บตารางไว้ต่างชีทกันก็ติดปัญหาต้องเลือกชื่อชีทให้ถูกต้องเสียอีก

ผู้ใช้ Excel ไม่ควรหลงกลกับการแยกชีทว่าจะสร้างปัญหาทำให้สร้างสูตรเชื่อมโยงข้ามชีทยากขึ้น เพียงแค่นำ Range Name มาใช้จะช่วยทำให้ลิงก์ข้อมูลจากตารางชื่อต่างๆได้โดยไม่ต้องสนใจว่าอยู่ในชีทใด

ตามปกติในสูตร VLookup, Match, Offset, หรือสูตรด้านฐานข้อมูลใดๆ สามารถรับตำแหน่งตารางได้เพียงตารางเดียวในวงเล็บของสูตร เช่น สูตร =VLOOKUP($H$3,MyData,2,0) ใช้ Range Name ชื่อ MyData เป็นตำแหน่งตารางฐานข้อมูลที่ต้องการค้นหาคำตอบ ถ้าต้องการทำให้สูตร VLookup หรือสูตรฐานข้อมูลสูตรใดๆสูตรเดียวสามารถค้นหาข้อมูลจากหลากหลายตาราง ให้ใช้สูตร IF หรือ Choose ซ้อนเข้าไปในส่วนของ MyData

สมมติว่า มีตารางฐานข้อมูลของลูกค้าหลายๆกลุ่มตามเกรดของลูกค้า ซึ่งลักษณะของตารางฐานข้อมูลของแต่ละกลุ่มมีหน้าตาตารางเหมือนๆกัน เพียงแต่จัดเก็บแยกตารางไว้ต่างพื้นที่ (หรือต่างชีทกัน) แล้วตั้งชื่อตารางว่า ClassA, ClassB, และ ClassC

เมื่อต้องการค้นหาข้อมูล ให้พิมพ์ชื่อ Class A, B, หรือ C ลงไปในเซลล์ B10 ซึ่งตั้งชื่อว่า Class แล้วพิมพ์รหัสลูกค้าลงไปในเซลล์ B14 จะสามารถค้นหาข้อมูลของ Name และ Amount โดยใช้สูตร IF(Class="A", ClassA, IF(Class="B", ClassB, ClassC) ) ซ้อนลงไปในสูตร VLookup เพื่อทำให้สามารถเลือกได้ว่าจะหาข้อมูลจากตารางใดตามเงื่อนไขชื่อ Class กลายเป็นสูตรดังนี้

ในเซลล์ C14
=VLOOKUP( $B$14, IF(Class="A", ClassA, IF(Class="B", ClassB, ClassC) ), 2, 0)

ในเซลล์ D14
=VLOOKUP( $B$14, IF(Class="A", ClassA, IF(Class="B", ClassB, ClassC) ), 3, 0)

หากไม่ต้องการเสียเวลาพิมพ์ชื่อ Class เพื่อเพิ่มความสะดวกให้ใช้รหัสในเซลล์ B14 เลือกค้นหาข้อมูลได้ทันที ให้ใช้สูตร =Left(C14) สร้างลงไปในเซลล์ B10 ซึ่งตั้งชื่อว่า Class เพื่อดึงตัวอักษรที่อยู่ซ้ายสุดของรหัสมาใช้เป็นชื่อ Class ดังนั้นการตั้งชื่อรหัสให้มีความหมายจะทำให้เกิดประโยชน์ช่วยลัดขั้นตอนในการใช้งานอย่างมาก

การใช้สูตร IF เพื่อเลือกพื้นที่ตารางหลายๆแห่งมาใช้ จะกลายเป็นสูตร IF ซ้อนกัน ทำให้สร้างขึ้นมาได้ยากและกลายเป็นสูตรยาวขึ้นเรื่อยๆ จึงแนะนำให้ให้ใช้สูตร Choose แทน IF แต่ต้องใช้ตัวเลขที่ตาราง 1, 2, หรือ 3 มาใช้เป็นเงื่อนไขแทนชื่อตาราง A, B, หรือ C

เมื่อต้องการค้นหาข้อมูล ให้พิมพ์เลขที่ Class 1, 2, หรือ 3 ลงไปในเซลล์ B10 ซึ่งตั้งชื่อว่า Class แล้วพิมพ์รหัสลูกค้าลงไปในเซลล์ B14 จะสามารถค้นหาข้อมูลของ Name และ Amount โดยใช้สูตร CHOOSE(Class,Class1,Class2,Class3) ซ้อนลงไปในสูตร VLookup เพื่อทำให้สามารถเลือกได้ว่าจะหาข้อมูลจากตารางใดตามเงื่อนไขเลขที่ Class กลายเป็นสูตรดังนี้

ในเซลล์ C14
=VLOOKUP( $B$14, CHOOSE(Class,Class1,Class2,Class3), 2, 0)

ในเซลล์ D14
=VLOOKUP( $B$14, CHOOSE(Class,Class1,Class2,Class3), 3, 0)

หากไม่ต้องการเสียเวลาพิมพ์เลขที่ Class เพื่อเพิ่มความสะดวกให้ใช้รหัสในเซลล์ B14 เลือกค้นหาข้อมูลได้ทันที ต้องสร้างตารางสรุปความสัมพันธ์ระหว่างรหัสกับเลขที่ Class ขึ้นมาใช้งาน ตามภาพต่อไปนี้คือเซลล์ F10:G12 โดยตั้งชื่อว่า ClassTable ซึ่งมี column ซ้ายสุดเรียงลำดับเลขรหัส Id เฉพาะรหัสตัวแรกของแต่ละกลุ่ม แล้วให้ใช้สูตร VLookup แบบ Approaching Match =VLOOKUP(B14,ClassTable,2) สร้างลงไปในเซลล์ B10 ซึ่งมีชื่อว่า Class

 

 

Download แฟ้มตัวอย่าง กรณีตารางอยู่ในชีทเดียวกัน ได้จาก
http://excelexperttraining.com/download/ChooseVLookup.xlsb

Download แฟ้มตัวอย่าง กรณีตารางอยู่ต่างชีทกัน ได้จาก
http://excelexperttraining.com/download/ChooseVLookupSheets.xlsb

 
 

 

Author: สมเกียรติ ฟุ้งเกียรติEmail: This email address is being protected from spambots. You need JavaScript enabled to view it.

E-Learning

Go to top