เพื่อมุ่งให้เกิดคุณภาพจากการอบรมสูงสุด Excel Expert Training ให้การอบรม Excel กลุ่มเล็กๆ ไม่เกิน 6 คนทุกคนสามารถเรียนรู้ Excel อย่างใกล้ชิด จะมาคนเดียวหรือมาเป็นกลุ่มแล้วนัดวันอบรมแบบส่วนตัวก็ได้ ผู้เข้าอบรมทุกคนสามารถติดตามเนื้อหาที่อบรมได้อย่างชัดเจนจากจอภาพด้านหน้าของตัวเอง
Results 1 to 7 of 7

Thread: Validation List แบบเลือกรายการย่อยต่อๆกันไป

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    สมเกียรติ
    Guest

    Validation List แบบเลือกรายการย่อยต่อๆกันไป

    เห็นถามกันบ่อยๆว่า จะทำอย่างไรให้คลิกเลือกชื่อจังหวัด แล้วให้อีกช่องหนึ่งคลิกเลือกอำเภอของจังหวัดนั้นๆ แล้วอีกช่องหนึ่งคลิกเลือกตำบลของอำเภอนั้นๆ จึงทำมาให้ดูครับ

    ผมออกแบบตารางข้อมูลให้เก็บรายละเอียดตามแนวตั้งแทนเพื่อให้ใช้สูตรได้ง่ายและเก็บข้อมูลได้ง่ายขึ้น จะได้ไม่ต้องใส่ชื่อรายการซ้ำให้เสียเวลา

    วิธีแรกใช้สูตร
    =INDEX(SubGroup1,MATCH(List1,MainGroupList,0),0)

    วิธีที่สองใช้สูตรยากขึ้นหน่อยแต่ให้ปรับขนาด List ได้ตามข้อมูลที่มีได้ด้วย
    =OFFSET(INDEX(MainGroupList,MATCH(List1,MainGroupList,0)),0,1,1,Width1)

  2. #2
    สมเกียรติ
    Guest
    ผมเพิ่มสูตรนำข้อมูลในตารางมาจัดเรียงใหม่ตามแนวตั้ง จะได้ไม่ต้องเสียเวลามากรอกข้อมูลซ้ำครับ โดยใช้สูตรหาตำแหน่ง Row.0000Col
    =SMALL(IF(NOT(ISBLANK(SubGroup1)),ROW(SubGroup1)+COLUMN(SubGroup1)/100000),ROW(INDIRECT("1:"&COUNTA(SubGroup1))))

    จากนั้นใช้สูตรต่อไปนี้ดึงข้อมูลจากตำแหน่งเซลล์ตามเลข Row.0000Col
    =INDIRECT(ADDRESS(INT(A14),ROUND((A14-INT(A14))*100000,0)))

  3. #3
    สมเกียรติ
    Guest
    เพิ่มสีเตือนเมื่อคลิกเลือกข้อมูลที่อยู่ต่างกลุ่มกัน โดยใช้ Conditional Formatting ด้วยสูตรต่อไปนี้ครับ
    =SUMPRODUCT((MainGroupList=List1)*ROW(MainGroupList))<>SUMPRODUCT((SubGroup1=List2)*ROW(SubGroup1))

    จะได้ระวังว่า กำลังเลือกข้อมูลต่างกลุ่มกันอยู่

  4. #4
    สมเกียรติ
    Guest
    ผมจัดตารางฐานข้อมูลแต่ละเรื่องให้กลับข้างกันกับตัวอย่างที่แล้วมา จะได้กรอกข้อมูลได้ง่ายขึ้นครับ

  5. #5
    pichartyapan
    Guest
    Quote Originally Posted by สมเกียรติ View Post
    ผมเพิ่มสูตรนำข้อมูลในตารางมาจัดเรียงใหม่ตามแนวตั้ง จะได้ไม่ต้องเสียเวลามากรอกข้อมูลซ้ำครับ โดยใช้สูตรหาตำแหน่ง Row.0000Col
    =SMALL(IF(NOT(ISBLANK(SubGroup1)),ROW(SubGroup1)+COLUMN(SubGroup1)/100000),ROW(INDIRECT("1:"&COUNTA(SubGroup1))))

    จากนั้นใช้สูตรต่อไปนี้ดึงข้อมูลจากตำแหน่งเซลล์ตามเลข Row.0000Col
    =INDIRECT(ADDRESS(INT(A14),ROUND((A14-INT(A14))*100000,0)))
    บรรทัดนี้หมายความว่าอย่างไร ทำงานอย่างไรครับ ไม่เคยเห็นเลย รบกวนด้วยครับ
    "ตำแหน่งเซลล์ตามเลข Row.0000Col"

  6. #6
    สมเกียรติ
    Guest
    Quote Originally Posted by สมเกียรติ View Post
    ผมเพิ่มสูตรนำข้อมูลในตารางมาจัดเรียงใหม่ตามแนวตั้ง จะได้ไม่ต้องเสียเวลามากรอกข้อมูลซ้ำครับ โดยใช้สูตรหาตำแหน่ง Row.0000Col
    =SMALL(IF(NOT(ISBLANK(SubGroup1)),ROW(SubGroup1)+COLUMN(SubGroup1)/100000),ROW(INDIRECT("1:"&COUNTA(SubGroup1))))

    จากนั้นใช้สูตรต่อไปนี้ดึงข้อมูลจากตำแหน่งเซลล์ตามเลข Row.0000Col
    =INDIRECT(ADDRESS(INT(A14),ROUND((A14-INT(A14))*100000,0)))
    2 สูตรนี้ช่วยทำหน้าที่จัดเรียงข้อมูลที่กรอกไว้ในพื้นที่ตารางสี่เหลี่ยมหลาย row หลาย column มาเรียงติดต่อกันตามแนวตั้งครับ เราจะได้ไม่ต้องเสียเวลามากรอกค่าใหม่ อยู่ในแฟ้ม ListinList2.xls

    =SMALL(IF(NOT(ISBLANK(SubGroup1)),ROW(SubGroup1)+COLUMN(SubGroup1)/100000),ROW(INDIRECT("1:"&COUNTA(SubGroup1))))

    เป็นสูตรหาตำแหน่งของข้อมูลที่กรอกไว้ในพื้นที่ตาราง ให้ออกมาในโครงสร้างของเลข row ในหลักหน่วยขึ้นไป ต่อด้วยเลข col ในหลักทศนิยมครับ เช่น 7.00003 หมายถึงค่าที่มีตำแหน่งเซลล์จาก row 7 และ column 3

    จากนั้นจึงใช้สูตร =INDIRECT(ADDRESS(INT(A14),ROUND((A14-INT(A14))*100000,0))) หาค่าจากเซลล์ row 7 และ column 3 มาเรียงไว้ตามแนวตั้งต่อ

  7. #7
    pichartyapan
    Guest
    Quote Originally Posted by สมเกียรติ View Post
    2 สูตรนี้ช่วยทำหน้าที่จัดเรียงข้อมูลที่กรอกไว้ในพื้นที่ตารางสี่เหลี่ยมหลาย row หลาย column มาเรียงติดต่อกันตามแนวตั้งครับ เราจะได้ไม่ต้องเสียเวลามากรอกค่าใหม่ อยู่ในแฟ้ม ListinList2.xls

    =SMALL(IF(NOT(ISBLANK(SubGroup1)),ROW(SubGroup1)+COLUMN(SubGroup1)/100000),ROW(INDIRECT("1:"&COUNTA(SubGroup1))))

    เป็นสูตรหาตำแหน่งของข้อมูลที่กรอกไว้ในพื้นที่ตาราง ให้ออกมาในโครงสร้างของเลข row ในหลักหน่วยขึ้นไป ต่อด้วยเลข col ในหลักทศนิยมครับ เช่น 7.00003 หมายถึงค่าที่มีตำแหน่งเซลล์จาก row 7 และ column 3

    จากนั้นจึงใช้สูตร =INDIRECT(ADDRESS(INT(A14),ROUND((A14-INT(A14))*100000,0))) หาค่าจากเซลล์ row 7 และ column 3 มาเรียงไว้ตามแนวตั้งต่อ
    ไม่ได้เข้ามาดู Excel Expert Volunteer's Article & News สักเท่าไร เลยไม่เห็นที่อาจารย์ Post ตอบ เพิ่มได้เข้ามาดูวันนี้ครับ
    ขอบคุณครับ อาจารย์ เข้าใจขึ้นบ้างแล้วครับ ขอบคุณครับ

Similar Threads

  1. Validation List
    By Reddevil1 in forum Excel Expert Forum Library 2012 - 2007
    Replies: 3
    Last Post: 8 Jul 2010, 15:34
  2. Validation List
    By khem99 in forum Excel Expert Forum Library 2012 - 2007
    Replies: 1
    Last Post: 20 Feb 2009, 09:04
  3. Replies: 16
    Last Post: 2 Dec 2008, 21:26
  4. Range Name กับ Validation List
    By Noi in forum Excel Expert Forum Library 2012 - 2007
    Replies: 3
    Last Post: 9 Nov 2008, 11:13
  5. Validation List
    By rangsitk4 in forum Excel Expert Forum Library 2012 - 2007
    Replies: 2
    Last Post: 3 Feb 2008, 21:53

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •