Carol hỏi liệu có cách nào trong Excel để tạo danh sách thả xuống để danh sách thả xuống thứ hai phụ thuộc vào lựa chọn được thực hiện trong danh sách thả xuống đầu tiên hay không.

Thực tế có một số cách khác nhau để bạn có thể thực hiện nhiệm vụ này, từ các công thức đơn giản đến macro phức tạp. Phương pháp bạn chọn phụ thuộc trực tiếp nhất vào loại danh sách thả xuống bạn muốn tạo. Thực tế có ba loại danh sách thả xuống mà bạn có thể tạo trong Excel:

Danh sách xác thực . * Nếu bạn muốn giới hạn đầu vào trong các ô nhất định, thì bạn có thể tạo danh sách xác thực thả xuống.

Danh sách Forms . * Bạn có thể sử dụng thanh công cụ Biểu mẫu (View | Toolbars | Forms) để tạo danh sách thả xuống. Đây là những điều tuyệt vời nếu bạn định tạo một biểu mẫu Excel được bảo vệ.

Userforms . * Đây là các hộp thoại, được tạo trong trình soạn thảo VBA. Bạn “chạy” một biểu mẫu người dùng bằng cách gọi nó từ một macro. Đây là dạng giao diện người dùng linh hoạt nhất, vì nó cho phép bạn hiển thị vĩ độ lớn nhất trong những gì người dùng nhìn thấy. (Nó cũng yêu cầu kiến ​​thức nâng cao nhất về Excel để tạo.)

Thay vì thảo luận về cách tạo danh sách thả xuống phụ thuộc dựa trên từng loại danh sách thả xuống này, tôi sẽ chọn xem xét phương pháp đơn giản nhất, sẽ đủ cho hầu hết mọi người. Nếu bạn sử dụng hàm INDIRECT cùng với danh sách xác thực dữ liệu, bạn sẽ dễ dàng có được kết quả như ý muốn:

  1. Trên trang tính trống trong sổ làm việc của bạn, hãy tạo danh sách các mục sẽ có trong danh sách thả xuống đầu tiên. Ví dụ: tạo danh sách các phòng ban trong công ty của bạn, chẳng hạn như Bán hàng, Nghiên cứu, Điều hành, Sản xuất, v.v. (Đây phải là các mục nhập từ một từ trong danh sách.)

  2. Chọn danh sách các mục bạn đã tạo ở bước 1 và đặt tên cho phạm vi bằng tên chẳng hạn như “Phòng ban”.

  3. Trên cùng một trang tính, hãy tạo danh sách các mục có thể xuất hiện trong danh sách thả xuống phụ. Nên có một danh sách cho mỗi mục trong danh sách bạn đã thực hiện ở bước 1. Ví dụ: bạn có thể tạo danh sách Nhân viên kinh doanh, danh sách nhân viên Nghiên cứu, v.v.

  4. Liệt kê theo danh sách, chọn danh sách bạn đã tạo ở bước 3. Đặt cho mỗi danh sách một tên một từ khớp với tên được sử dụng trong danh sách ở bước 1, tức là Bán hàng, Nghiên cứu, Điều hành, v.v.

  5. Chuyển sang trang tính mà bạn muốn danh sách thả xuống xuất hiện.

  6. Chọn các ô mà người dùng có thể nhập các mục từ danh sách đầu tiên của bạn — ô đã tạo ở bước 1.

  7. Chọn Xác thực từ menu Dữ liệu. Excel sẽ hiển thị hộp thoại Xác thực Dữ liệu. (Xem Hình 1.)

  8. Sử dụng danh sách thả xuống Cho phép, chọn Danh sách.

  9. Trong hộp Nguồn, hãy nhập một dấu bằng theo sau là tên bạn đã tạo ở bước 2. Ví dụ: = Phòng ban.

  10. Bấm OK. Bây giờ bạn đã chỉ định rằng chỉ thông tin từ danh sách đầu tiên của bạn mới có thể được nhập vào các ô bạn đã chọn ở bước 6.

  11. Chọn các ô mà người dùng có thể nhập các mục từ danh sách phụ thuộc. Ví dụ: chọn các ô ngay bên phải các ô bạn đã chọn ở bước 6.

  12. Chọn Xác thực từ menu Dữ liệu. Excel sẽ hiển thị hộp thoại Xác thực Dữ liệu.

  13. Sử dụng danh sách thả xuống Cho phép, chọn Danh sách.

  14. Trong hộp Nguồn, hãy nhập công thức sử dụng hàm INDIRECT. Nếu ô đầu tiên của dải ô được chọn ở bước 11 là ô B3 và bạn muốn ô đầu tiên phụ thuộc vào ô được chọn trong ô A3, thì bạn sẽ sử dụng công thức sau:

  15. Bấm OK.

Đó là nó. Giờ đây, mọi người chỉ có thể chọn từ danh sách chính của bạn nếu họ đang sử dụng một trong các ô được chỉ định trong bước 6 và từ các danh sách phụ thuộc thích hợp nếu họ chọn một trong các ô ở bước 11.

Có rất nhiều biến thể khác nhau của phương pháp này (sử dụng xác thực dữ liệu). Bạn có thể tìm thêm thông tin về một số cách tiếp cận này bằng cách truy cập các trang Web sau:

http://www.ozgrid.com/download/ (download the MatchingLists.zip file)

http://www.contextures.com/xlDataVal02.html

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (2972) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: