Dependent dropdown คือช่องเลือกที่ตัวเลือกเปลี่ยนตามช่องก่อนหน้า เช่น เลือกจังหวัดแล้วช่องอำเภอโชว์เฉพาะอำเภอของจังหวัดนั้น หรือเลือกหมวดสินค้าแล้วช่องรุ่นโชว์เฉพาะรุ่นในหมวดนั้น ทำได้ด้วย Data Validation ผสมกับสูตร บทความนี้มี 2 วิธี: วิธีใหม่ด้วย FILTER (Microsoft 365) และวิธีคลาสสิกด้วย INDIRECT
วิธีที่ 1: ใช้ FILTER (Microsoft 365) — แนะนำ
ขั้นที่ 1 เตรียมตารางข้อมูล 2 คอลัมน์ (หมวด, รายการ) ไว้ที่ชีตหนึ่ง สมมติอยู่ที่ Data!A2:B20
ขั้นที่ 2 สร้างช่องพักผลลัพธ์ ใส่สูตรดึงรายการตามหมวดที่เลือกในเซลล์ E2
=SORT(FILTER(Data!B2:B20, Data!A2:A20=E2))| E | H | ||
|---|---|---|---|
| 1 | หมวดที่เลือก | รายการที่ใช้ได้ | |
| 2 | เครื่องเขียน | ดินสอ | |
| 3 | ปากกา | ||
| 4 | ยางลบ |
ขั้นที่ 3 คลิกช่องอำเภอ/รุ่น → Data → Data Validation → Allow: List → Source ใส่ =$H$2# (เครื่องหมาย # ท้ายหมายถึง “ทั้ง spill range” ยืดหดตามผลลัพธ์ FILTER อัตโนมัติ)
ช่องแรก (หมวด) ตั้ง Data Validation เป็น List ชี้ไปที่ลิสต์หมวดที่ไม่ซ้ำ ได้จาก =UNIQUE(Data!A2:A20)
วิธีที่ 2: ใช้ INDIRECT + Named Range (ทุกเวอร์ชัน)
ขั้นที่ 1 จัดข้อมูลเป็นกลุ่มแนวตั้ง โดยหัวคอลัมน์ = ชื่อหมวด
ตั้งชื่อแต่ละคอลัมน์ให้ตรงกับหัว| A | B | |
|---|---|---|
| 1 | เครื่องเขียน | ของเล่น |
| 2 | ดินสอ | ตุ๊กตา |
| 3 | ปากกา | บล็อกต่อ |
ขั้นที่ 2 เลือก A1:B3 → Formulas → Create from Selection → ติ๊ก “Top row” Excel จะสร้าง Named Range ชื่อ เครื่องเขียน และ ของเล่น ให้อัตโนมัติ
ขั้นที่ 3 ช่องหมวด: Data Validation → List → Source = หัวคอลัมน์ทั้งหมด
ช่องรายการ: Data Validation → List → Source = =INDIRECT(E2) เมื่อ E2 คือช่องหมวด
INDIRECT แปลงข้อความ “เครื่องเขียน” ในเซลล์ E2 ให้กลายเป็นการอ้างอิง Named Range ที่ชื่อเดียวกัน ตัวเลือกจึงเปลี่ยนตาม
ข้อควรรู้
- ชื่อหมวดมีเว้นวรรค/อักขระพิเศษ — Named Range ใช้ช่องว่างไม่ได้ Excel จะแทนด้วย
_ให้ ต้อง=INDIRECT(SUBSTITUTE(E2," ","_")) - เปลี่ยนหมวดแล้วช่องเดิมค้างค่าเก่า — เพิ่มกฎ Conditional Formatting หรือสูตรเช็คให้เตือนเมื่อค่าไม่อยู่ในลิสต์ใหม่
- วิธี FILTER ดีกว่าเมื่อข้อมูลยาวไม่เท่ากัน — ไม่ต้องจัดเป็นคอลัมน์คู่กันให้ยุ่ง และเพิ่มข้อมูลใหม่แล้วลิสต์อัปเดตเอง
- ทำหลายชั้น — จังหวัด → อำเภอ → ตำบล ทำซ้ำหลักการเดิม โดยช่องที่ 3 กรองด้วยทั้งช่องที่ 1 และ 2