Tạo danh sách thả xuống phụ thuộc (dependent drop-down) luôn là thách thức trong Excel. Cần khi có mối quan hệ giữa 2 hay nhiều danh sách. Thường dùng công thức hoặc Data Validation, nhưng VBA cũng cho cách tiếp cận linh hoạt. Bài viết trình bày 3 phương pháp VBA.
Đọc thêm: Cách Tạo Drop Down List Trong Excel (Độc Lập Và Phụ Thuộc)
Drop Down List Phụ Thuộc Là Gì?
Khi lựa chọn ở danh sách 1 quyết định nội dung danh sách 2. Ví dụ: Chọn Category "Fruits" → danh sách Food chỉ hiện "Raspberry, Apricot, Peach, Mango".

Đọc thêm: Tạo Dynamic Dependent Drop Down List Trong Excel
3 Cách Tạo Multiple Dependent Drop-Down List Bằng Excel VBA
1. Cho Phép Chọn Nhiều Mục Trong Một Drop-Down List (VBA)
Cho phép chọn nhiều thành viên cho một Project. Dữ liệu: Project Name (cột B), Project Members (cột C).

Bước 1: Tab Developer → Visual Basic (Alt+F11).

Bước 2: Chọn worksheet tương ứng trong Project Explorer.
Bước 3: Dán mã vào code window của sheet đó:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Old_value As String
Dim New_value As String
Application.EnableEvents = True
On Error GoTo Exitsub
If Not Intersect(Target, Range("C4:C11")) Is Nothing Then
If Target.SpecialCells(xlCellTypeAllValidation) Is Nothing Then GoTo Exitsub
Else:
If Target.Value = "" Then GoTo Exitsub
Else
Application.EnableEvents = False
New_value = Target.Value
Application.Undo
Old_value = Target.Value
If Old_value = "" Then
Target.Value = New_value
Else
If InStr(1, Old_value, New_value) = 0 Then
Target.Value = Old_value & ", " & New_value
Else:
Target.Value = Old_value
End If
End If
End If
End If
Application.EnableEvents = True
Exitsub:
Application.EnableEvents = True
End Sub
Bước 4-5: Chọn nhiều tên trong cột Project Member → tất cả ô cho phép chọn nhiều.

Đọc thêm: Cách Chọn Nhiều Mục Từ Drop Down List Trong Excel
2. Tạo Multiple Dependent Drop-Down List Bằng VBA
Dữ liệu: Category (Vegetable, Fruit, Dairy) → Food items tùy theo Category.

Bước 1: Mở VBA (Method 1 Step 1-2) → dán mã tạo 3 list con:
Sub Vegetable_List()
Range("C4:C6").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="=Vegetable_List"
End Sub
Sub Fruit_List()
Range("C4:C6").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="=Fruits_list"
End Sub
Sub Dairy_List()
Range("C4:C6").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="=Dairy_Product_List"
End Sub
Bước 2: Mã chính cho phạm vi B4:B6 (Category):
Private Sub Worksheet_Change(ByVal Target As Range)
Range("B4:B6").Validation.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Formula1:="Vegetable_List,Fruits_list,Dairy_Product_List"
If Range("B4:B6").Value = "Vegetable_List" Then
Call Vegetable_List
ElseIf Range("B4:B6").Value = "Fruits_list" Then
Call Fruit_List
ElseIf Range("B4:B6").Value = "Dairy_Product_List" Then
Call Dairy_List
Else
End If
End Sub
Giải thích: Tạo list Category ở B4:B6. Dùng IF ELSE kiểm tra giá trị chọn → gọi hàm tạo list Food tương ứng (Call Vegetable_List, v.v.).

Bước 3-5: Chọn Category → Food column tự động lọc items phù hợp.

3. Xóa Danh Sách Phụ Thuộc (Clear Dependent Drop-Down) Bằng VBA
Vấn đề: Chọn Food rồi đổi Category → Food cũ vẫn còn (mismatch). VBA tự xóa cột Food khi Category thay đổi.

Bước 1: Mở VBA → dán mã:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Column = 2 Then
If Target.Validation.Type = 3 Then
Application.EnableEvents = False
Target.Offset(0, 1).ClearContents
End If
End If
exitHandler:
Application.EnableEvents = True
Exit Sub
End Sub

Bước 2: Chọn Food → đổi Category khác → ô Food tự xóa.
First
Second
Final Output 
Đọc thêm: Cách Xóa Drop-Down List Trong Excel
Lưu Ý & Lỗi Thường Gặp
| Lỗi Thường Gặp | Khi Nào Xảy Ra |
|---|---|
| Không xóa được List | Data Validation: Allow ≠ List hoặc Source sai. Dùng VBA xóa. |
| Giá trị không cập nhật | Dependent drop-down: giá trị mismatch không tự cập nhật. Dùng công thức hoặc VBA (Method 3). |
Kết Luận
3 cách tạo/thao tác multiple dependent drop-down lists bằng VBA. Có phương pháp khác? Hãy chia sẻ!
Đọc Thêm
- Tạo Drop Down List Nhiều Cột Trong Excel (3 Cách)
- Excel Drop Down List Depending on Selection
- Dùng IF Statement Tạo Drop-Down List
- Tạo Drop Down List Từ Sheet Khác (2 Phương Pháp)
- Sửa Drop-Down List Trong Excel (4 Cách)
- VLOOKUP Với Drop Down List