จากบทความก่อนหน้าได้เกริ่นเรื่องการทำงานของ Array Formula ไปแล้ว คราวนี้จะขอยกตัวอย่างการใช้ที่ค่อนข้าง Advance ขึ้นแล้วนั่นก็คือ การ Extract ข้อมูลหลายๆ รายการ ออกมาตามเงื่อนไขที่กำหนด เช่น โจทย์คือ “แสดงทุกรายการที่อยู่ใน group a ” ออกมา จะเห็นว่าแบบนี้ใช้ VLOOKUP ตรงๆ ไม่ได้แน่นอน เพราะ VLOOKUP จะเจอแค่ข้อมูลที่เจอเป็นแถวแรกเท่านั้น Show แล้วถ้าเจอแบบนี้เราจะต้องเขียนสูตรยังไง มาดู VDO สอนเทคนิคการทำข้างล่างนี้ได้เลยครับ หลักการ1. หาแถวที่อยู่ใน Group ที่ต้องการ
2. หาแถวที่น้อยที่สุดเป็นลำดับ 1,2,3…
3. ดึงข้อมูลที่ต้องการออกมาด้วย INDEX
4. กำจัด Error ซะ
ผมได้มีเียนบทความตอนใหม่เรื่องนี้ด้วย ลองไปดูได้ที่ สารพัดเทคนิคสำหรับคนอยาก VLOOKUP ผลลัพธ์หลายค่า จากคำค้นหาเดียว แชร์ความรู้ให้เพื่อนๆ ของคุณ 2 2 แม้หลักการบันทึกข้อมูลที่ดีควรเก็บข้อมูลเรื่องเดียวกันไว้ในตารางเดียวกัน เวลาจะแยกแยะข้อมูลตามกลุ่มรายการก็สามารถใช้คำสั่ง 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 ในเซลล์ D14 หากไม่ต้องการเสียเวลาพิมพ์ชื่อ 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 ในเซลล์ D14 หากไม่ต้องการเสียเวลาพิมพ์เลขที่ Class เพื่อเพิ่มความสะดวกให้ใช้รหัสในเซลล์ B14 เลือกค้นหาข้อมูลได้ทันที ต้องสร้างตารางสรุปความสัมพันธ์ระหว่างรหัสกับเลขที่ Class ขึ้นมาใช้งาน ตามภาพต่อไปนี้คือเซลล์ F10:G12 โดยตั้งชื่อว่า ClassTable ซึ่งมี column ซ้ายสุดเรียงลำดับเลขรหัส Id เฉพาะรหัสตัวแรกของแต่ละกลุ่ม แล้วให้ใช้สูตร VLookup แบบ Approaching Match =VLOOKUP(B14,ClassTable,2) สร้างลงไปในเซลล์ B10 ซึ่งมีชื่อว่า Class |