Hướng dẫn tạo danh sách không có giá trị trùng trong combobox
Làm thế nào để tạo danh sách không có giá trị trùng trong combobox. Hãy đọc bài viết dưới đây do eLib biên soạn để tìm cho mình được câu trả lời chính xác nhất nhé.
Mục lục nội dung
1. Đặt vấn đề
Xét trường hợp sau:
Chúng ta có 1 danh sách nhân viên trong công ty được phân thành các bộ phận, các nhóm. Ở cột Bộ phận và cột Nhóm có các nội dung được lặp lại. Chúng ta muốn tạo combo box mà danh sách chọn cho Bộ phận, Nhóm là các giá trị không trùng.
Danh sách chọn ở Bộ phận bao gồm:
- Kinh doanh
- Kế toán
- Bán hàng
Danh sách chọn ở Nhóm bao gồm:
- Team A
- Team B
- Team C
- Team D
- Team E
- Team F
2. Cách thực hiện
2.1. Tạo Combo box
Để tạo ra 1 combo box, chúng ta cần vào tab Developer > Insert > Combobox (ActiveX Control)
Sau đó chúng ta vẽ ra trong Sheet 1 Combo Box, có thể đặt ở bất kỳ sheet nào. Trong ví dụ này chúng ta sẽ đặt tại Sheet1 – là nơi chứa danh sách cần nạp cho Combo Box để dễ hình dung.
Sau khi tạo ra Combo Box, chúng ta tìm hiểu một số thiết lập cơ bản trong Combo box bằng cách click chuột phải vào combobox và chọn Properties
Trong cửa sổ Properties chú ý những nội dung sau:
ListFillRange : danh sách làm nguồn cho Combobox
LinkedCell : ô liên kết từ combobox để ghi nhận kết quả nội dung được chọn bởi combobox
ColumnsCount : số lượng cột trong combobox (phụ thuộc vào ListFillRange có bao nhiêu cột)
ColumnsWidths : phân chia độ rộng từng cột dựa theo việc có bao nhiêu cột
BoundColumn : cột nào sẽ là cột kết quả cần lấy trong trường hợp có nhiều cột
Ví dụ chúng ta thiết lập combobox gồm 3 cột, lấy theo vùng bảng A2:C10, độ rộng mỗi cột tương ứng là 50-50-80pt, kết quả lấy theo cột thứ 1, nội dung được chọn sẽ liên kết tới ô E2:
2.2. Tạo Combobox với danh sách không trùng
Cách thủ công bằng thao tác tay
Bước 1: Copy nội dung cột Bộ phận ra cột F
Bước 2: Thực hiện việc loại bỏ các giá trị trùng tại cột F bằng chức năng Data / Remove Duplicates
Kết quả sau khi thực hiện thao tác Remove Dupplicates như sau:
Như vậy các giá trị trùng đã được bỏ đi, chỉ còn lại 3 nội dung.
Chúng ta sẽ nạp danh sách từ ô F2 tới ô F4 tương ứng với 3 nội dung này vào trong combo box mục ListFillRange
Tuy nhiên cách này khả thủ công bởi khi nhập thêm dữ liệu vào bảng thì chúng ta phải lặp lại thao tác RemoveDuplicates, nếu không dữ liệu trong danh sách sẽ không được cập nhật.
Sử dụng VBA để tạo List cho Combobox
Câu lệnh VBA được diễn đạt như sau:
Gắn với sự kiện Worksheet_Active (mỗi khi sheet chứa combobox được chọn) sẽ cập nhật lại danh sách trong combobox
Private Sub Worksheet_Activate() 'Lấy danh sách không trùng vào ComboBox
Dim rng As Range 'Tạo biến Vùng danh sách gốc
Dim r As Range 'Tạo biến để thực hiện vòng lặp trong danh sách gốc
Dim Dic As Object 'Tạo biến để gọi đối tượng dictionary
Dim ws As Worksheet 'Tạo biến Sheet chứa danh sách gốc
Set ws = ActiveSheet 'Sheet chứa danh sách gốc là sheet đang làm việc
Set rng = ws.Range("A2", ws.Range("A" & Rows.Count).End(xlUp)) 'Vùng danh sách gốc nằm ở cột A, bắt đầu từ ô A2
Set Dic = CreateObject("scripting.dictionary") 'Thiết lập đối tượng dictionary
Dic.CompareMode = vbTextCompare 'Thực hiện việc so sánh các ký tự text trong thư viện dic
For Each r In rng
Dic(r.Value) = Empty 'Các giá trị trùng sẽ được bỏ đi
Next
With ComboBox1
.ListFillRange = "" 'Xóa danh sách cũ đã có trước đó
If .ListCount = 0 Then 'Thực hiện việc nạp danh sách mới
.List = Application.Transpose(Dic.keys) 'Lấy kết quả còn lại ở Dic vào Danh sách chọn của combobox1
.ListIndex = 0
End If
End With
End Sub
Kết quả thu được như sau:
Như vậy bạn đã có thể hiểu rõ hơn về đối tượng ComboBox và cách tạo danh sách chọn cho Combobox rồi phải không nào. Đặc biệt là chúng ta còn có thể sử dụng VBA để tạo danh sách không trùng, có thể tự động cập nhật lại danh sách mỗi khi chúng ta làm việc. Điều này thật thú ví đúng không. Chúc các bạn thành công!
Tham khảo thêm
- doc Hướng dẫn vẽ biểu đồ đường và biểu đồ tròn trong Excel mà bạn nên biết
- doc Cách dùng hàm AVERAGE, MAX, MIN
- doc Cách sử dụng hàm Sum và hàm SUMIF trong Excel
- doc Hướng dẫn hàm tính tiền tích lũy và khấu hao tài sản trong Excel
- doc Hướng dẫn cách tạo chú thích cho ô và thay đổi màu cho ô theo giá trị trong Excel
- doc Hướng dẫn cách gộp ô và cố định hàng, cốt trong Excel
- doc Hướng dẫn cách gộp nhiều Sheet vào một Sheet và cách xuất dữ liệu ra file Excel mới
- doc Hướng dẫn vẽ biểu đồ thanh/ cột chồng trong Excel một cách nhanh chóng nhất
- doc Hướng dẫn thay đổi cột kết quả và cách lọc giá trị trong Pivottable của Excel MacBook
- doc Hướng dẫn xóa cột hoặc dòng Grand ToTal và cách để làm mới một Pivottable trong Excel
- doc Hướng dẫn thủ thuật làm mới một Pivot Table trong Excel một cách nhanh chóng nhất
- doc Hướng dẫn cách cố định các đối tượng với hàng, cột và viết hàm tìm dòng cuối cùng có dữ liệu trong VBA
- doc Hướng dẫn cách đánh số thứ tự ngày tháng bỏ qua các ngày cuối tuần và sử dụng Flash Fill để tách họ tên trong Excel
- doc Hướng dẫn cách xoá bỏ giá trị trùng lặp với Power Query và các cách để Transpose trong Excel
- doc Giới thiệu cách sử dụng Data Validation List với nguồn là Table và cách loại bỏ dấu chấm trong số điện thoại
- doc Hướng dẫn lập sổ nhật ký chung và sổ cái bằng hàm “HeoSQL”
- doc Hướng dẫn sử dụng hàm VLOOKUP trả về mảng giá trị và sử dụng hàm VLOOKUP lồng VLOOKUP trong Excel
- doc Hướng dẫn đếm số lượng giá trị duy nhất trong 1 vùng và cách tách rời từng ký tự một ra khỏi chuỗi
- doc Hướng dẫn lấy ra danh sách tên các Sheet và tạo phím tắt đếm số lượng Sheet ẩn, hiện trong Excel
- doc Hướng dẫn cách lấy dữ liệu từ 1 File Excel đang đóng và Cách lấy lại File Excel do bị tắt đột ngột
- doc Phương pháp để Protect và UnProtect nhiều Sheet cùng 1 lúc trong Excel một cách nhanh chóng
- jpg Hướng dẫn dùng INDEX và MATCH trong Excel một cách nhanh chóng nhất
- doc Hướng dẫn sửa lỗi không chọn được Visual Basic, Macro trong thẻ Developer và cách gộp các file CSV vào trong một file chung nhanh chóng
- doc Hướng dẫn chi tiết cách sử dụng Quick Access Toolbar trong Excel
- doc Hướng dẫn thay đổi vùng in tự động và viết tắt họ tên trên Excel bằng VBA
- doc Hướng dẫn lấy tên Worksheet đang làm việc một cách nhanh chóng nhất
- doc Hướng dẫn cách tạo Combobox trong Excel một cách nhanh chóng nhất
- doc Hướng dẫn tạo Menu liên kết tới các sheet bằng hàm Hyperlink và cách sử dụng công thức đếm số lần xuất hiện trong Table
- doc Hướng dẫn tra cứu thời gian và tìm giá trị gần đúng nhất bằng VBA
- doc Cách dùng hàm SUMIFS lập báo cáo tổng hợp một cách nhanh chóng nhất
- doc Hướng dẫn cách tính trung bình của một số theo từng lần và sử dụng hàm Subtotal để đánh số thứ tự kết quả lọc Autofilter
- doc Hướng dẫn lập bảng kế hoạch thanh toán hóa đơn trong Excel nhanh chóng nhất
- doc Hướng dẫn cách sử dụng Regular Expression và cách tra cứu thời gian bằng VBA
- doc VBA là gì? VBA trong Excel giúp ích gì cho công việc của bạn?
- doc Vẽ và phân tích biểu đồ xu hướng với Data Analysis trong Excel
- doc Hướng dẫn cách sử dụng hàm PMT tính số tiền thanh toán hàng kỳ cho khoản vay và cách phân tích trả nợ gốc và lãi cùng chuỗi hàm PMT trong Excel
- doc Hướng dẫn chọn nội dung xuất hiện nhiều nhất trong danh sách và sử dụng vòng tính lặp trong Excel