Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Office

Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản

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".

Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản

Đọ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).

Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản

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

Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản

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.

Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản

Đọ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.

Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản

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.).

Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản

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

Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản

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.

Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản

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

Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản

Bước 2: Chọn Food → đổi Category khác → ô Food tự xóa.

First Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản Second Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản Final Output Tạo Danh Sách Thả Xuống Phụ Thuộc Đa Cấp Trong Excel VBA – 3 Phương Pháp Đơn Giản

Đọ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ặpKhi Nào Xảy Ra
Không xóa được ListData Validation: Allow ≠ List hoặc Source sai. Dùng VBA xóa.
Giá trị không cập nhậtDependent 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