Bài viết hướng dẫn tạo excel data validation drop-down list cho phép chọn nhiều (multiple selection). Data validation mặc định chỉ cho chọn 1 mục. Nhưng muốn chọn nhiều mục từ menu thả xuống? Hướng dẫn này dùng macro để vượt qua giới hạn chọn nhiều từ data validation drop-down list.
Tải file thực hành tại đây.
3 Ví dụ tạo Data Validation Drop-Down List chọn nhiều trong Excel
Quy trình áp dụng VBA macro tạo data validation drop-down list chọn nhiều hơi phức tạp. Để dễ hiểu, demo 3 ví dụ khác nhau chọn nhiều từ data validation drop-down list.
1. Tạo Data Validation Drop-Down List chọn nhiều trong một ô
Trước hết, có tập dữ liệu sau gồm tên 4 quốc gia. Muốn tạo data validation drop-down list chọn nhiều từ tên này. Thông thường data validation chỉ cho chọn 1 quốc gia trong 1 ô. Nhưng muốn nhập nhiều tên quốc gia từ list vào 1 ô.

Xem các bước thực hiện.
CÁC BƯỚC:
- Chọn phạm vi ô (D4:D8). Đặt tên phạm vi 'dv_list_0'.

- Chọn phạm vi ô (B5:B8) đặt tên 'Country_Range'.

- Vào Data > Data Tools > Data Validation > Data Validation.

- Hộp thoại 'Data Validation' mở ra.
- Chọn List từ Allow. Nhập công thức sau vào Source:
=dv_list_0- Nhấn OK.

- Mũi tên thả xuống hiện ở bên phải ô đã chọn.

- Chuột phải vào tên sheet đang hoạt động. Chọn 'View Code'.

- Mở module VBA trống. Dán mã sau vào module:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Value_Old As String
Dim Value_New As String
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Not Intersect(Target, ActiveSheet.Range("Country_Range")) Is Nothing Then
Application.EnableEvents = False
Value_New = Target.Value
On Error Resume Next
Application.Undo
On Error GoTo 0
Value_Old = Target.Value
If InStr(Value_Old, Value_New) Then
If InStr(Value_Old, ", ") Then
If InStr(Value_Old, ", " & Value_New) Then
Target.Value = Replace(Value_Old, ", " & Value_New, "")
Else
Target.Value = Replace(Value_Old, Value_New & ", ", "")
End If
Else
Target.Value = ""
End If
Else
If Value_Old = "" Then
Target.Value = Value_New
Else
If Value_New = "" Then
Target.Value = ""
Else
If InStr(Target.Value, Value_New) = 0 Then
Target.Value = Value_Old & ", " & Value_New
End If
End If
End If
End If
Application.EnableEvents = True
Else
Exit Sub
End If
End Sub
- Nhấn nút Run hoặc phím F5 chạy mã.

- Đặt tên macro và nhấn Run. Tên Macro ví dụ này là VBA.

- Chọn USA từ menu thả xuống ô B5. Nhập tên quốc gia USA vào ô B5.

- Chọn thêm Canada và Mexico. Tất cả giá trị từ menu thả xuống được chọn trong 1 ô.

Đọc thêm: Cách tạo Excel Drop Down List cho Data Validation (8 cách)
2. Chèn chọn nhiều vào cột liền kề bằng Data Validation Drop-Down List
Ví dụ 2: tạo data validation drop-down list chọn nhiều vào cột liền kề. Chọn mục từ list, tự động nhập vào cột bên cạnh. Dùng tập dữ liệu trước.

CÁC BƯỚC:
- Chọn ô D5. Tạo data validation drop-down như phương pháp trước. Dùng phạm vi (B5:B8) làm source.

- Chuột phải tên sheet đang hoạt động, chọn 'View Code'.

- Module VBA trống mở ra. Viết mã sau:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo exitHandler
Dim DV_Range As Range
Dim Col_i As Integer
If Target.Count > 1 Then GoTo exitHandler
On Error Resume Next
Set DV_Range = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo exitHandler
If DV_Range Is Nothing Then GoTo exitHandler
If Intersect(Target, DV_Range) Is Nothing Then
Else
Application.EnableEvents = False
If Target.Column = 4 Then
If Target.Value = "" Then GoTo exitHandler
If Target.Validation.Value = True Then
Col_i = Cells(Target.Row, Columns.Count).End(xlToLeft).Column + 1
Cells(Target.Row, Col_i).Value = Target.Value
Else
MsgBox "Invalid entry"
Target.Activate
End If
End If
End If
exitHandler:
Application.EnableEvents = True
End Sub
- Nhấn F5 hoặc click Run chạy mã.

- Hộp thoại Macros hiện ra. Tạo macro tên VBA1 nhấn Run.

- Từ mũi tên thả xuống ô D5 chọn USA.

- Tên quốc gia USA nhập vào ô E5 (cột liền kề E).

- Chọn tiếp Canada và Mexico. Giá trị chọn lần lượt nằm ở các cột liền kề.

Đọc thêm: Giá trị mặc định trong Data Validation List với Excel VBA (Macro và UserForm)
Đọc tương tự:
- Autocomplete Data Validation Drop Down List trong Excel (2 phương pháp)
- Cách tạo Data Validation List từ Bảng trong Excel (3 phương pháp)
- Áp dụng Multiple Data Validation trong một ô trong Excel (3 ví dụ)
- Cách xóa khoảng trắng từ Data Validation List trong Excel (5 phương pháp)
- Excel Data Validation chỉ chữ và số (Dùng Custom Formula)
3. Chọn nhiều ở các hàng riêng biệt với Data Validation Drop-Down List
Ví dụ 3 tương tự ví dụ 2. Ví dụ 2 chọn nhiều ở cột liền kề, ví dụ này chọn nhiều ở các hàng riêng biệt. Tạo data validation drop-down list chọn nhiều, tiếp tục dùng tập dữ liệu trước.

CÁC BƯỚC:
- Chọn ô D5. Tạo data validation drop-down như trước. Validate dùng phạm vi (B5:B8) làm source.

- Chuột phải vào sheet đang hoạt động. Chọn 'View Code'.

- Module VBA trống mở ra. Nhập mã sau:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo exitHandler
Dim DV_Range As Range
Dim Row_1 As Long
Dim Col_1 As Long
Col_1 = Target.Column
If Target.Count > 1 Then GoTo exitHandler
On Error Resume Next
Set DV_Range = Cells.SpecialCells(xlCellTypeAllValidation)
On Error GoTo exitHandler
If DV_Range Is Nothing Then GoTo exitHandler
If Intersect(Target, DV_Range) Is Nothing Then
Else
If Target.Value = "" Then GoTo exitHandler
Application.EnableEvents = False
Select Case Target.Column
Case 4
If Target.Offset(0, 1).Value = "" Then
Row_1 = Target.Row
Else
Row_1 = Cells(Rows.Count, Col_1 + 1).End(xlUp).Row + 1
End If
Cells(Row_1, Col_1 + 1).Value = Target.Value
Target.ClearContents
End Select
End If
exitHandler:
Application.EnableEvents = True
End Sub
- Nhấn Run hoặc F5 chạy mã.

- Hộp thoại Macros hiện ra. Đặt tên macro VBA2 nhấn Run.

- Từ dropdown ô D5 chọn USA.

- Tên USA nằm cùng hàng nhưng cột liền kề.

- Chọn lần lượt Canada, Mexico, England. Giá trị chọn lần lượt nằm cùng cột nhưng hàng riêng biệt.

Đọc thêm: Excel Data Validation Drop Down List với Filter (2 ví dụ)
Kết luận
Vậy là tutorial này đưa ra tổng quan tạo data validation drop-down list chọn nhiều. Để kiểm tra kỹ năng, tải file thực hành đi kèm. Hãy comment dưới nếu có thắc mắc. Đội ngũ sẽ phản hồi sớm. Tiếp tục theo dõi các giải pháp Microsoft Excel đổi mới.
Các bài viết liên quan
- Cách dùng IF Statement trong Data Validation Formula trong Excel (6 cách)
- Dùng Data Validation trong Excel với màu sắc (4 cách)
- Cách dùng Data Validation List từ Sheet khác (6 phương pháp)
- Dùng Named Range cho Data Validation List với VBA trong Excel
- [Fixed] Data Validation không hoạt động khi Copy Paste trong Excel (có giải pháp)