Chọn nhiều mục trong danh sách thả xuống Excel – hướng dẫn đầy đủ
Danh sách thả xuống của Excel là một công cụ tuyệt vời để đảm bảo tính nhất quán của dữ liệu và dễ dàng nhập liệu. Tuy nhiên, theo mặc định, họ hạn chế bạn chỉ chọn một mục. Nhưng nếu bạn cần chọn nhiều mục từ cùng một danh sách thả xuống thì sao? Hướng dẫn toàn diện này sẽ khám phá các phương pháp để bật nhiều lựa chọn trong danh sách thả xuống của Excel, quản lý các bản sao, đặt dấu phân cách tùy chỉnh và xác định phạm vi của các danh sách này.
- Cho phép các mục trùng lặp
- Xóa mọi mục hiện có
- Đặt dấu phân cách tùy chỉnh
- Đặt phạm vi được chỉ định
- Thực thi trong một bảng tính được bảo vệ
Kích hoạt nhiều lựa chọn trong danh sách thả xuống
Phần này cung cấp hai phương pháp giúp bạn kích hoạt nhiều lựa chọn trong danh sách thả xuống trong Excel.
Sử dụng mã VBA
Để cho phép nhiều lựa chọn trong danh sách thả xuống, bạn có thể sử dụng Visual Basic cho các ứng dụng (VBA) trong Excel. Tập lệnh có thể sửa đổi hành vi của danh sách thả xuống để biến nó thành danh sách trắc nghiệm. Hãy làm như sau.
Bước 1: Mở trình soạn thảo Sheet (Code)
- Mở trang tính chứa danh sách thả xuống mà bạn muốn bật nhiều lựa chọn.
- Nhấp chuột phải vào tab trang tính và chọn Mã Chế độ xem từ trình đơn ngữ cảnh.
Bước 2: Sử dụng mã VBA
Bây giờ sao chép mã VBA sau và dán nó vào cửa sổ bảng mở (Mã).
Mã VBA: Bật nhiều lựa chọn trong danh sách thả xuống Excel.
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub
Kết quả
Khi bạn quay lại bảng tính, danh sách thả xuống sẽ cho phép bạn chọn nhiều tùy chọn, xem bản demo bên dưới:
Mã VBA ở trên:
- Áp dụng cho tất cả danh sách thả xuống xác thực dữ liệu trong trang tính hiện tại, cả danh sách hiện tại và danh sách được tạo trong tương lai.
- Ngăn bạn chọn cùng một mục nhiều lần trong mỗi danh sách thả xuống.
- Sử dụng dấu phẩy làm dấu phân cách cho các mục đã chọn. Để sử dụng các dấu phân cách khác, vui lòng xem phần này để thay đổi dấu phân cách.
Sử dụng Kutools cho Excel chỉ trong vài cú nhấp chuột
Nếu bạn không thoải mái với VBA, một giải pháp thay thế dễ dàng hơn là Kutools cho Excel's Danh sách thả xuống nhiều lựa chọn tính năng. Công cụ thân thiện với người dùng này đơn giản hóa việc bật nhiều lựa chọn trong danh sách thả xuống, cho phép bạn tùy chỉnh dấu phân cách và quản lý các bản sao một cách dễ dàng để đáp ứng các nhu cầu khác nhau của bạn.
Sau cài đặt Kutools cho Excel, Đi đến Kutools tab, chọn Danh sách thả xuống > Danh sách thả xuống nhiều lựa chọn. Sau đó, bạn cần phải cấu hình như sau.
- Chỉ định phạm vi chứa danh sách thả xuống mà bạn cần chọn nhiều mục từ đó.
- Chỉ định dấu phân cách cho các mục đã chọn trong ô danh sách thả xuống.
- Nhấp chuột OK để hoàn thành cài đặt.
Kết quả
Bây giờ, khi bạn bấm vào ô có danh sách thả xuống trong phạm vi đã chỉ định, một hộp danh sách sẽ xuất hiện bên cạnh ô đó. Chỉ cần nhấp vào nút "+" bên cạnh các mục để thêm chúng vào ô thả xuống và nhấp vào nút "-" để xóa bất kỳ mục nào bạn không muốn nữa. Xem bản demo bên dưới:
- Kiểm tra Ngắt dòng văn bản sau khi chèn dấu phân cách tùy chọn nếu bạn muốn hiển thị các mục đã chọn theo chiều dọc trong ô. Nếu bạn thích danh sách theo chiều ngang, hãy bỏ chọn tùy chọn này.
- Kiểm tra Cho phép tìm kiếm tùy chọn nếu bạn muốn thêm thanh tìm kiếm vào danh sách thả xuống của mình.
- Để áp dụng tính năng này, vui lòng tải xuống và cài đặt Kutools cho Excel đầu tiên.
Thêm thao tác cho danh sách thả xuống nhiều lựa chọn
Phần này thu thập các kịch bản khác nhau có thể được yêu cầu khi bật nhiều lựa chọn trong danh sách thả xuống Xác thực dữ liệu.
Cho phép các mục trùng lặp trong danh sách thả xuống
Sự trùng lặp có thể là một vấn đề khi nhiều lựa chọn được cho phép trong danh sách thả xuống. Mã VBA ở trên không cho phép các mục trùng lặp trong danh sách thả xuống. Nếu bạn cần giữ lại các mục trùng lặp, hãy thử mã VBA trong phần này.
Mã VBA: Cho phép trùng lặp trong danh sách thả xuống xác thực dữ liệu
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Set TargetRange = Me.UsedRange ' Users can change target range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then Exit Sub
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
Target.Value = xValue1 & delimiter & xValue2
End If
Application.EnableEvents = True
On Error GoTo 0
End Sub
Kết quả
Bây giờ bạn có thể chọn nhiều mục từ danh sách thả xuống trong bảng tính hiện tại. Để lặp lại một mục trong ô danh sách thả xuống, hãy tiếp tục chọn mục đó từ danh sách. Xem ảnh chụp màn hình:
Xóa mọi mục hiện có khỏi danh sách thả xuống
Sau khi chọn nhiều mục từ danh sách thả xuống, đôi khi bạn có thể cần xóa một mục hiện có khỏi ô danh sách thả xuống. Phần này cung cấp một đoạn mã VBA khác để giúp bạn hoàn thành nhiệm vụ này.
Mã VBA: Xóa mọi mục hiện có khỏi ô danh sách thả xuống
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRngDV As Range
Dim TargetRange As Range
Dim oldValue As String
Dim newValue As String
Dim delimiter As String
Dim allValues As Variant
Dim valueExists As Boolean
Dim i As Long
Dim cleanedValue As String
Set TargetRange = Me.UsedRange ' Set your specific range here
delimiter = ", " ' Set your desired delimiter here
If Target.CountLarge > 1 Then Exit Sub
' Check if the change is within the specific range
If Intersect(Target, TargetRange) Is Nothing Then Exit Sub
On Error Resume Next
Set xRngDV = Target.SpecialCells(xlCellTypeAllValidation)
If xRngDV Is Nothing Or Target.Value = "" Then
' Skip if there's no data validation or if the cell is cleared
Application.EnableEvents = True
Exit Sub
End If
On Error GoTo 0
If Not Intersect(Target, xRngDV) Is Nothing Then
Application.EnableEvents = False
newValue = Target.Value
Application.Undo
oldValue = Target.Value
Target.Value = newValue
' Split the old value by delimiter and check if new value already exists
allValues = Split(oldValue, delimiter)
valueExists = False
For i = LBound(allValues) To UBound(allValues)
If Trim(allValues(i)) = newValue Then
valueExists = True
Exit For
End If
Next i
' Add or remove value based on its existence
If valueExists Then
' Remove the value
cleanedValue = ""
For i = LBound(allValues) To UBound(allValues)
If Trim(allValues(i)) <> newValue Then
If cleanedValue <> "" Then cleanedValue = cleanedValue & delimiter
cleanedValue = cleanedValue & Trim(allValues(i))
End If
Next i
Target.Value = cleanedValue
Else
' Add the value
If oldValue <> "" Then
Target.Value = oldValue & delimiter & newValue
Else
Target.Value = newValue
End If
End If
Application.EnableEvents = True
End If
End Sub
Kết quả
Mã VBA này cho phép bạn chọn nhiều mục từ danh sách thả xuống và dễ dàng xóa bất kỳ mục nào bạn đã chọn. Sau khi chọn nhiều mục, nếu muốn xóa một mục cụ thể, bạn chỉ cần chọn lại mục đó từ danh sách.
Đặt dấu phân cách tùy chỉnh
Dấu phân cách được đặt là dấu phẩy trong các mã VBA ở trên. Bạn có thể sửa đổi biến này thành bất kỳ ký tự ưa thích nào để sử dụng làm dấu phân cách cho các lựa chọn trong danh sách thả xuống. Đây là cách bạn có thể làm:
Như bạn có thể thấy rằng các mã VBA ở trên đều có dòng sau:
delimiter = ", "
Bạn chỉ cần thay đổi dấu phẩy thành bất kỳ dấu phân cách nào bạn cần. Ví dụ bạn muốn phân tách các mục bằng dấu chấm phẩy thì đổi dòng thành:
delimiter = "; "
delimiter = vbNewLine
Đặt phạm vi được chỉ định
Mã VBA ở trên áp dụng cho tất cả danh sách thả xuống trong bảng tính hiện tại. Nếu bạn chỉ muốn mã VBA áp dụng cho một phạm vi danh sách thả xuống nhất định, bạn có thể chỉ định phạm vi trong mã VBA ở trên như sau.
Như bạn có thể thấy rằng các mã VBA ở trên đều có dòng sau:
Set TargetRange = Me.UsedRange
Bạn chỉ cần thay đổi dòng thành:
Set TargetRange = Me.Range("C2:C10")
Thực thi trong một bảng tính được bảo vệ
Hãy tưởng tượng rằng bạn đã bảo vệ một bảng tính bằng mật khẩu "123" và đặt các ô trong danh sách thả xuống thành "Unlocked" trước khi kích hoạt tính năng bảo vệ, nhờ đó đảm bảo rằng chức năng chọn nhiều lựa chọn vẫn hoạt động sau khi bảo vệ. Tuy nhiên, các mã VBA được đề cập ở trên không thể hoạt động trong trường hợp này và phần này mô tả một tập lệnh VBA khác được thiết kế đặc biệt để xử lý chức năng đa lựa chọn trong một bảng tính được bảo vệ.
Mã VBA: Cho phép nhiều lựa chọn trong danh sách thả xuống mà không trùng lặp
Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20240118
Dim xRng As Range
Dim xValue1 As String
Dim xValue2 As String
Dim delimiter As String
Dim TargetRange As Range
Dim isProtected As Boolean
Dim pswd As Variant
Set TargetRange = Me.UsedRange ' Set your specific range here
delimiter = ", " ' Users can change the delimiter here
If Target.Count > 1 Or Intersect(Target, TargetRange) Is Nothing Then Exit Sub
' Check if sheet is protected
isProtected = Me.ProtectContents
If isProtected Then
' If protected, temporarily unprotect. Adjust or remove the password as needed.
pswd = "yourPassword" ' Change or remove this as needed
Me.Unprotect Password:=pswd
End If
On Error Resume Next
Set xRng = TargetRange.SpecialCells(xlCellTypeAllValidation)
If xRng Is Nothing Then
If isProtected Then Me.Protect Password:=pswd
Exit Sub
End If
Application.EnableEvents = False
xValue2 = Target.Value
Application.Undo
xValue1 = Target.Value
Target.Value = xValue2
If xValue1 <> "" And xValue2 <> "" Then
If Not (xValue1 = xValue2 Or _
InStr(1, xValue1, delimiter & xValue2) > 0 Or _
InStr(1, xValue1, xValue2 & delimiter) > 0) Then
Target.Value = xValue1 & delimiter & xValue2
Else
Target.Value = xValue1
End If
End If
Application.EnableEvents = True
On Error GoTo 0
' Re-protect the sheet if it was protected
If isProtected Then
Me.Protect Password:=pswd
End If
End Sub
Bằng cách bật nhiều lựa chọn trong danh sách thả xuống của Excel, bạn có thể nâng cao đáng kể chức năng và tính linh hoạt của bảng tính của mình. Cho dù bạn cảm thấy thoải mái với mã hóa VBA hay thích giải pháp đơn giản hơn như Kutools, giờ đây bạn có khả năng chuyển đổi danh sách thả xuống tiêu chuẩn của mình thành các công cụ động, có nhiều lựa chọn. Với những kỹ năng này, giờ đây bạn đã được trang bị để tạo các tài liệu Excel năng động và thân thiện hơn với người dùng. Đối với những người mong muốn tìm hiểu sâu hơn về các khả năng của Excel, trang web của chúng tôi tự hào có rất nhiều hướng dẫn. Khám phá thêm các mẹo và thủ thuật Excel tại đây.
Bài viết liên quan
Tự động điền khi nhập trong Excel danh sách thả xuống
Nếu bạn có danh sách thả xuống xác thực dữ liệu với các giá trị lớn, bạn cần cuộn xuống danh sách chỉ để tìm giá trị phù hợp hoặc nhập trực tiếp toàn bộ từ vào hộp danh sách. Nếu có phương pháp cho phép tự động hoàn thành khi nhập ký tự đầu tiên trong danh sách thả xuống, mọi thứ sẽ trở nên dễ dàng hơn. Hướng dẫn này cung cấp phương pháp để giải quyết vấn đề.
Tạo danh sách thả xuống từ một sổ làm việc khác trong Excel
Khá dễ dàng để tạo danh sách sổ xuống xác thực dữ liệu giữa các trang tính trong sổ làm việc. Nhưng nếu dữ liệu danh sách bạn cần để xác thực dữ liệu nằm trong một sổ làm việc khác, bạn sẽ làm gì? Trong hướng dẫn này, bạn sẽ học cách tạo danh sách drop fown từ một sổ làm việc khác trong Excel một cách chi tiết.
Tạo danh sách thả xuống có thể tìm kiếm trong Excel
Đối với một danh sách thả xuống với nhiều giá trị, việc tìm một giá trị thích hợp không phải là một công việc dễ dàng. Trước đây, chúng tôi đã giới thiệu một phương pháp tự động hoàn thành danh sách thả xuống khi nhập ký tự đầu tiên vào hộp thả xuống. Bên cạnh chức năng tự động hoàn thành, bạn cũng có thể làm cho danh sách thả xuống có thể tìm kiếm được để nâng cao hiệu quả làm việc trong việc tìm kiếm các giá trị thích hợp trong danh sách thả xuống. Để làm cho danh sách thả xuống có thể tìm kiếm được, hãy thử phương pháp trong hướng dẫn này.
Tự động điền các ô khác khi chọn giá trị trong danh sách thả xuống của Excel
Giả sử bạn đã tạo một danh sách thả xuống dựa trên các giá trị trong phạm vi ô B8: B14. Khi bạn chọn bất kỳ giá trị nào trong danh sách thả xuống, bạn muốn các giá trị tương ứng trong phạm vi ô C8: C14 được tự động điền vào một ô đã chọn. Để giải quyết vấn đề, các phương pháp trong hướng dẫn này sẽ giúp bạn.
Công cụ năng suất văn phòng tốt nhất
Nâng cao kỹ năng Excel của bạn với Kutools for Excel và trải nghiệm hiệu quả hơn bao giờ hết. Kutools for Excel cung cấp hơn 300 tính năng nâng cao để tăng năng suất và tiết kiệm thời gian. Bấm vào đây để có được tính năng bạn cần nhất...
Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều
- Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
- Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
- Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
Mục lục
- Kích hoạt nhiều lựa chọn
- Sử dụng mã VBA
- Sử dụng Kutools cho Excel chỉ trong vài cú nhấp chuột
- Các hoạt động khác
- Cho phép các mục trùng lặp
- Xóa mọi mục hiện có
- Đặt dấu phân cách tùy chỉnh
- Đặt phạm vi được chỉ định
- Thực thi trong một bảng tính được bảo vệ
- Bài viết liên quan
- Các công cụ năng suất văn phòng tốt nhất
- Nhận xét