Chiêu số 24: Dùng nhiều List cho 1 Combobox
Excel cung cấp cho bạn những cách để chọn 1 thứ trong 1 danh sách để nhập liệu vào 1 ô. Trong đó có công cụ combobox, từ danh sách xổ xuống của combobox, bạn có thể chọn 1 ngày trong tuần, 1 tháng trong năm, hoặc 1 sản phẩm trong danh sách. Nếu bạn cần chọn lựa trong 3 danh sách khác nhau, bạn sẽ nghĩ rằng bạn cần 3 cái combobox.
Thay vì vậy, bạn dùng chiêu sau đây, kết hợp 1 combobox với 3 option button. Trong thí dụ sau, bạn hãy tạo 1 bảng tính, điền số từ 1 đến 7 vào vùng A1:A7, điền từ chủ nhật đến thứ hai vào vùng B1:B7, và điền tháng từ tháng 1 đến tháng 7 vào vùng C1:C7.
Một cách nhanh nhất để điền 21 ô này là hãy gõ 1 vào A1. Trong khi nhấn giữ Ctrl, nắm cái fill handle của ô A1 và kéo xuống A7. Tiếp theo, gõ Sunday vào B2, doubled-click vào fill handle của B1. Cuối cùng gõ Jan vào ô C1, doubled-click vào fill handle của C1. Xong.
Bây giờ bạn vào Developer âž Controls âž Insert âž Form Controls (với Excel 2003, View âž Toolbars âž Forms) và nhấn icon Option Button. Vẽ 3 cái lên sheet. Vẽ thêm 1 cái Groupbox bao quanh 3 cái Option cho đẹp. Bây giờ vẽ 1 cái Combobox ở 1 chỗ thích hợp.
Nhấn chuột phải vào các Option, chọn Edit Text, sửa các từ Option1, Option 2, Option 3, Groupbox1 như hình:
Nhấn chuột phải vào 1 Option bất kỳ, chọn Format Control, trong tab Control, gõ $F$1 vào ô Cell Link.
Ở ô D6 gõ công thức =ADDRESS(1;$F$1)&":"&ADDRESS(7;$F$1)
Vào Define Name, đặt mới 1 name MyRange, công thức là =INDIRECT($D$6)
Nhấn chuột phải vào cái combobox, vào Format control, trong Cell link gõ MyRange, Cell link là $G$1.
Bây giờ khi bạn chọn 1 trong các option, ô F1 thay đổi các giá trị từ 1 đến 3, ô D6 thay đổi với các giá trị $A$1:$A$7, $B$1:$B$7, $C$1:$S$7. Và list trong combobox cũng đổi theo.
Bổ sung:
Có 1 vấn đề là 3 list không phải lúc nào cũng dài bằng nhau (bằng 7 trong thí dụ trên), thí dụ số từ 1 đến 10, thứ trong tuần từ Chủ nhật đến thứ bảy, tháng từ 1 đến 12. Vậy ta sẽ phải làm gì?
Ta hãy làm từ từ nhé, trước tiên là cách dùng ô phụ (tác giả cũng dùng 2 ô phụ).
Gõ công thức sau vào ô G1:
=COUNTA(INDIRECT(ADDRESS(1;$F$1)&":"&ADDRESS(100;$F$1)))
Với công thức trên, G1 sẽ có các giá trị là 10, 7, 12 tương ứng với F1 là 1, 2, 3.
Sửa tiếp số 7 chết trong công thức ô D6 thành $G$1 cho động:
=ADDRESS(1;$F$1)&":"&ADDRESS($G$1;$F$1)
Kết quả hoàn toàn mỹ mãn. Ô D6 sẽ lần lượt là $A$1:$A$10, $B$1:$B$7, $C$1:$C$12
Bây giờ là cách GPE: dấu (bỏ) các ô phụ.
Hiện Name MyRange của ta là =INDIRECT($D$6),
Sửa bước thứ nhất là thay $D$6 bằng công thức của D6:
=INDIRECT(ADDRESS(1;$F$1)&":"&ADDRESS($G$1;$F$1))
Kế đó thay $G$1 bằng công thức của G1:
=INDIRECT(ADDRESS(1;$F$1)&":"&ADDRESS(COUNTA(INDIRECT(ADDRESS(1;$F$1)&":"&ADDRESS(100;$F$1)));$F$1))
Ta có thể đàng hoàng xoá ô D6 và ô G1. Chỉ còn 1 ô F1 là link cell của 3 options, ta format nó thành chữ trắng là OK.
Trong file đính kèm dưới đây, tôi chưa xoá ô D6 và ô G1, để lại cho các bạn xem chơi, rồi từ từ xoá sau.
Một số bài viết có liên quan:
1/ Chiêu số 23: Bật, tắt chức năng Conditional Formatting bằng 1 checkbox
2/ Chiêu thứ 22: Tạo hiệu ứng 3D trong các bảng tính hay các ô
3/ Chiêu thứ 21: Tô màu dòng xen kẽ
4/ Chiêu thứ 20: Đếm hoặc cộng những ô đã được định dạng có điều kiện
5/ Chiêu số 19: Đánh dấu những ô chứa công thức bằng Conditional Formatting
6/ Chiêu số 18: Điều khiển Conditional Formating bằng checkbox
7/ Chiêu thứ 17: Sử dụng Data-Validation khi danh sách nguồn nằm trong một Sheet khác (Excel <2010)
8/ Chiêu thứ 16: Cứu dữ liệu từ một bảng tính bị lỗi
9/ Chiêu thứ 15: Giảm kích thước file Excel bị phình to bất thường
10/ Chiêu thứ 14: Gỡ bỏ những liên kết ma
http://www.giaiphapexcel.com/vbb/content.php?305
Excel cung cấp cho bạn những cách để chọn 1 thứ trong 1 danh sách để nhập liệu vào 1 ô. Trong đó có công cụ combobox, từ danh sách xổ xuống của combobox, bạn có thể chọn 1 ngày trong tuần, 1 tháng trong năm, hoặc 1 sản phẩm trong danh sách. Nếu bạn cần chọn lựa trong 3 danh sách khác nhau, bạn sẽ nghĩ rằng bạn cần 3 cái combobox.
Thay vì vậy, bạn dùng chiêu sau đây, kết hợp 1 combobox với 3 option button. Trong thí dụ sau, bạn hãy tạo 1 bảng tính, điền số từ 1 đến 7 vào vùng A1:A7, điền từ chủ nhật đến thứ hai vào vùng B1:B7, và điền tháng từ tháng 1 đến tháng 7 vào vùng C1:C7.
Một cách nhanh nhất để điền 21 ô này là hãy gõ 1 vào A1. Trong khi nhấn giữ Ctrl, nắm cái fill handle của ô A1 và kéo xuống A7. Tiếp theo, gõ Sunday vào B2, doubled-click vào fill handle của B1. Cuối cùng gõ Jan vào ô C1, doubled-click vào fill handle của C1. Xong.
Bây giờ bạn vào Developer âž Controls âž Insert âž Form Controls (với Excel 2003, View âž Toolbars âž Forms) và nhấn icon Option Button. Vẽ 3 cái lên sheet. Vẽ thêm 1 cái Groupbox bao quanh 3 cái Option cho đẹp. Bây giờ vẽ 1 cái Combobox ở 1 chỗ thích hợp.
Nhấn chuột phải vào các Option, chọn Edit Text, sửa các từ Option1, Option 2, Option 3, Groupbox1 như hình:

Nhấn chuột phải vào 1 Option bất kỳ, chọn Format Control, trong tab Control, gõ $F$1 vào ô Cell Link.

Ở ô D6 gõ công thức =ADDRESS(1;$F$1)&":"&ADDRESS(7;$F$1)
Vào Define Name, đặt mới 1 name MyRange, công thức là =INDIRECT($D$6)
Nhấn chuột phải vào cái combobox, vào Format control, trong Cell link gõ MyRange, Cell link là $G$1.
Bây giờ khi bạn chọn 1 trong các option, ô F1 thay đổi các giá trị từ 1 đến 3, ô D6 thay đổi với các giá trị $A$1:$A$7, $B$1:$B$7, $C$1:$S$7. Và list trong combobox cũng đổi theo.
Bổ sung:
Có 1 vấn đề là 3 list không phải lúc nào cũng dài bằng nhau (bằng 7 trong thí dụ trên), thí dụ số từ 1 đến 10, thứ trong tuần từ Chủ nhật đến thứ bảy, tháng từ 1 đến 12. Vậy ta sẽ phải làm gì?
Ta hãy làm từ từ nhé, trước tiên là cách dùng ô phụ (tác giả cũng dùng 2 ô phụ).
Gõ công thức sau vào ô G1:
=COUNTA(INDIRECT(ADDRESS(1;$F$1)&":"&ADDRESS(100;$F$1)))
Với công thức trên, G1 sẽ có các giá trị là 10, 7, 12 tương ứng với F1 là 1, 2, 3.
Sửa tiếp số 7 chết trong công thức ô D6 thành $G$1 cho động:
=ADDRESS(1;$F$1)&":"&ADDRESS($G$1;$F$1)
Kết quả hoàn toàn mỹ mãn. Ô D6 sẽ lần lượt là $A$1:$A$10, $B$1:$B$7, $C$1:$C$12

Bây giờ là cách GPE: dấu (bỏ) các ô phụ.
Hiện Name MyRange của ta là =INDIRECT($D$6),
Sửa bước thứ nhất là thay $D$6 bằng công thức của D6:
=INDIRECT(ADDRESS(1;$F$1)&":"&ADDRESS($G$1;$F$1))
Kế đó thay $G$1 bằng công thức của G1:
=INDIRECT(ADDRESS(1;$F$1)&":"&ADDRESS(COUNTA(INDIRECT(ADDRESS(1;$F$1)&":"&ADDRESS(100;$F$1)));$F$1))
Ta có thể đàng hoàng xoá ô D6 và ô G1. Chỉ còn 1 ô F1 là link cell của 3 options, ta format nó thành chữ trắng là OK.
Trong file đính kèm dưới đây, tôi chưa xoá ô D6 và ô G1, để lại cho các bạn xem chơi, rồi từ từ xoá sau.
Một số bài viết có liên quan:
1/ Chiêu số 23: Bật, tắt chức năng Conditional Formatting bằng 1 checkbox
2/ Chiêu thứ 22: Tạo hiệu ứng 3D trong các bảng tính hay các ô
3/ Chiêu thứ 21: Tô màu dòng xen kẽ
4/ Chiêu thứ 20: Đếm hoặc cộng những ô đã được định dạng có điều kiện
5/ Chiêu số 19: Đánh dấu những ô chứa công thức bằng Conditional Formatting
6/ Chiêu số 18: Điều khiển Conditional Formating bằng checkbox
7/ Chiêu thứ 17: Sử dụng Data-Validation khi danh sách nguồn nằm trong một Sheet khác (Excel <2010)
8/ Chiêu thứ 16: Cứu dữ liệu từ một bảng tính bị lỗi
9/ Chiêu thứ 15: Giảm kích thước file Excel bị phình to bất thường
10/ Chiêu thứ 14: Gỡ bỏ những liên kết ma
http://www.giaiphapexcel.com/vbb/content.php?305
Upvote
0