Combo box là một công cụ trong Excel cho phép bạn chọn 1 nội dung trong 1 danh sách có sẵn. Đây là một công cụ rất hữu ích khi làm việc trong Excel. Tuy nhiên trong một vài trường hợp bạn muốn nạp vào Combo box 1 danh sách mà trong đó có những nội dung bị trùng lặp, nhưng bạn muốn danh sách chọn trong combo box không bị lặp lại các giá trị trùng đó. Vậy phải làm thế nào với yêu cầu này? Hãy cùng Học Excel Online tìm hiểu cách giải quyết nhé:
Xem nhanh
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:
Danh sách chọn ở Nhóm bao gồm:
Để 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:
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
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.
VBA giúp ích rất nhiều trong công việc: Tự động hóa Excel, viết hàm tự tạo, giúp làm việc trong Excel dễ dàng hơn, chuyên nghiệp hơn, bổ sung thêm những điều mà Excel không có sẵn. Để tìm hiểu thêm nhiều kiến thức về VBA, mời bạn tham dự 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. Hãy cùng khám phá nào