อยากคลิกเลือกชื่อเขตในช่องหนึ่งแล้วทำให้อีกช่องหนึ่งสามารถคลิกเลือกชื่อแขวงของเขตนั้น

อยากคลิกเลือกชื่อทวีปแล้วอีกช่องหนึ่งแสดงชื่อประเทศในทวีปนั้นมาให้คลิกเลือก

อยากคลิกเลือกกลุ่มสินค้าแล้วอีกช่องหนึ่งมีรายชื่อสินค้าของกลุ่มนั้นมามาให้คลิกเลือก

NameListinList

ปัญหานี้ถามกันบ่อยมาก ซึ่งทำได้หลายวิธี ก่อนโน้นผมใช้สูตร Offset บ้าง Index บ้าง แต่ซับซ้อนพอสมควร ขนาดตัวผมเองยังแกะสูตรในวิธีการของตัวเองไม่ออกเลย คราวนี้ขอแนะนำวิธีใหม่ใช้ Range Name มาช่วย โดยมีขั้นตอนการสร้าง ดังนี้

  1. ตั้งชื่อ Range Name ชื่อ District ให้กับชื่อเขตทั้งหมด
  2. ตั้งชื่อ Range Name ชื่อ DistrictNum ให้กับชื่อแขวงของแต่ละเขต โดย Num เป็นเลขที่เขตตามลำดับ
  3. ตั้งชื่อ Range Name ชื่อ Data ให้กับตารางชื่อเขตและชื่อเขตที่มีเลขที่เขตกำกับ
  4. หาชื่อเขต โดยสร้าง Data Validation แบบ List =District
  5. เมื่อคลิกเลือกชื่อเขตแล้ว ให้ใช้สูตร Vlookup ค้นหาชื่อ DistrictNum
  6. หาชื่อแขวง โดยสร้าง Data Validation แบบ List =Indirect(DistrictNum)

Download แฟ้มตัวอย่างได้จาก

https://drive.google.com/open?id=11Ya0kkaNuoOIcjo4K03Qn8t2b-ygr4f9

วิดีโอแสดงขั้นตอนการสร้าง

https://youtu.be/WV-pjZX_rvE
https://www.facebook.com/ExcelExpertTraining/posts/2465351560401314

วิธีนี้ง่ายดี ใช้สูตร VLookup ที่เราคุ้นเคย แต่มีข้อแม้ว่าต้องใช้กับชื่อที่เป็นตัวอักษรภาษาอังกฤษ

วิธีอื่นมีอีกหลายแบบ ผมทำวิดีโอพร้อมตัวอย่างไว้ที่ https://www.excelexperttraining.com/forum/articles/managing-excel-articles/576-list-in-list