Chào các bạn, mình là thành viên mới của diễn đàn. Hôm nay mình muốn chia sẻ một mẹo nhỏ mà mình vừa khám phá ra, giúp tự động hóa việc tạo danh sách thả xuống đa cấp (Multiple Dependent Dropdowns) trong Excel mà không cần dùng VBA.
Trước đây, để làm được điều này, mình thường phải dùng kết hợp giữa Data Validation và các hàm như INDIRECT hoặc OFFSET, hoặc thậm chí là VBA. Tuy nhiên, với các phiên bản Excel mới hơn (Excel 365 trở lên), chúng ta có thể tận dụng sức mạnh của công thức mảng động (Dynamic Array Formulas) để giải quyết vấn đề này một cách gọn gàng hơn.
Giả sử bạn có 2 danh sách: Danh sách Tỉnh/Thành phố và Danh sách Quận/Huyện. Bạn muốn khi chọn Tỉnh/Thành phố ở ô A1, thì ô B1 sẽ chỉ hiển thị các Quận/Huyện thuộc Tỉnh/Thành phố đó.
Cách làm như sau:
- Bước 1: Chuẩn bị dữ liệu nguồn. Bạn có thể tạo 2 bảng, một bảng liệt kê Tỉnh/Thành phố và một bảng khác liệt kê Quận/Huyện, với cột Tỉnh/Thành phố để liên kết.
- Bước 2: Tại ô bạn muốn hiển thị danh sách Quận/Huyện (ví dụ B1), nhập công thức sau:
=FILTER(DanhSachQuanHuyen, DanhSachQuanHuyen[Tỉnh/Thành phố]=A1) - Bước 3: Áp dụng Data Validation cho ô B1, chọn 'List' và tham chiếu đến ô chứa công thức ở Bước 2 (ví dụ:
=$B$1#). Dấu '#' này rất quan trọng để Excel hiểu bạn đang tham chiếu đến toàn bộ mảng kết quả trả về từ công thức.
Với cách này, bạn không cần tạo quá nhiều name range phức tạp nữa. Chỉ cần một công thức mảng là đủ! Mình thấy cách này rất hữu ích cho việc tạo form nhập liệu. Có bạn nào đã thử cách này chưa? Chia sẻ thêm kinh nghiệm nhé!