Combo Box là một công cụ hữu ích trong Excel cho phép người dùng chọn một nội dung từ danh sách có sẵn. Tuy nhiên, trong một số trường hợp, bạn có thể muốn tạo một Combo Box mà không có các giá trị trùng lặp trong danh sách. Bài viết này sẽ hướng dẫn bạn cách thực hiện điều đó một cách đơn giản và hiệu quả.
1. Đặt vấn đề
Xét một trường hợp thực tế, bạn có một danh sách nhân viên trong công ty được phân theo các bộ phận, các nhóm. Trong 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 một Combo Box mà danh sách chọn cho Bộ phận và Nhóm không bị trùng lặp.
Danh sách chọn cho Bộ phận bao gồm:
- Kinh doanh
- Kế toán
- Bán hàng
Danh sách chọn cho 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 một Combo Box, bạn cần vào tab Developer > Insert > ComboBox (ActiveX Control).
Tạo Combo Box trong Excel
Sau đó, bạn 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 – nơi chứa danh sách cần nạp cho Combo Box.
Sau khi đã tạo ra Combo Box, bạn 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 Combo Box và chọn Properties.
Cấu hình Combo Box
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.
Xóa trùng lặp trong Excel
Kết quả sau khi thực hiện thao tác Remove Duplicates sẽ chỉ còn lại các giá trị duy nhất.
Chúng ta sẽ nạp danh sách này 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 vì 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 Remove Duplicates, 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 sử dụng cần 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.
Kết quả thu được sẽ như sau:
Kết quả ComboBox cập nhật tự động
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 không bị trùng lặp. Đặ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ị phải không nào!
Hãy tham khảo thêm kiến thức về VBA với khóa học VBA101 – Tự động hóa Excel với lập trình VBA. Đây là khóa học rất hữu ích dành cho bạn.