Câu hỏi Làm thế nào để bạn tạo ra một danh sách trên excel dựa trên một tiêu chí nhất định?


Tôi đang cố gắng xây dựng một thứ gì đó giống như một trang tổng quan có một vài trình đơn thả xuống, sẽ tìm kiếm một bảng và cung cấp cho tôi một danh sách, dựa trên những gì tôi đã chọn. Vui lòng xem bảng dưới đây:

Table example

Vì vậy, điều tôi muốn là, khi tôi chọn 'Không bắt buộc' từ một trình đơn thả xuống và 'Doc 2' từ một trình đơn khác, nó sẽ cung cấp cho tôi danh sách tất cả các Hệ thống phù hợp với tiêu chí này.

Tôi thực sự đánh giá cao sự giúp đỡ về điều này!

Cảm ơn


0
2018-03-27 19:15


gốc




Các câu trả lời:


Tôi sẽ giả sử ảnh chụp màn hình là bảng dữ liệu của bạn và hai trình đơn thả xuống để chỉ định tiêu chí là ở nơi khác.

Công thức này, được điền từ B17 trong video bên dưới, liệt kê các Hệ thống phù hợp với tiêu chí:      =IFERROR(INDEX(A$2:A$13,AGGREGATE(15,6,ROW(A$1:A$12)/(INDEX(B$2:H$13,,MATCH(C$18,B$1:H$1))=C$17),ROW()-16)),"")

Đây là một công thức mảng, và nó phải được nhập với CTRLShiftĐi vào.

enter image description here

Tôi hy vọng điều này có thể giúp ích, chúc bạn may mắn. ______________________________________________________________________________

Làm thế nào nó hoạt động: Bên trong INDEX() trả về toàn bộ cột của bảng dữ liệu được chọn bằng menu thả xuống "Tài liệu" trong C$18. Sau đó, bình đẳng =C$17 trả về một mảng TRUE/FALSE giá trị với TRUE ở mọi vị trí trong đó ô chứa sự lựa chọn trong C$17 thả xuống.

ROW(A$1:A$12) cung cấp một mảng các số liên tiếp {1;2;3;...12}và điều này được chia cho TRUE/FALSE mảng.

Trong các phép toán số học liên quan đến các giá trị logic, TRUE và FALSE được chuyển thành 1 và 0. Vì vậy, các bộ phận cho một mảng #DIV/0! lỗi cho mỗi FALSE, xen kẽ với số hàng của mỗi lần xuất hiện của giá trị từ menu thả xuống.

Mảng này được cấp cho AGGREGATE() chức năng làm điều tương tự SMALL() sẽ làm (chức năng = 15), ngoại trừ nó có một tùy chọn để bỏ qua lỗi (tùy chọn = 6). Vì thế AGGREGATE() bỏ qua #DIV/0! lỗi và đưa ra một mảng chứa chỉ số hàng của các giá trị từ menu thả xuống C $ 17, khi hàm được điền đầy. Mảng này được sử dụng làm row-numtrong một cái khác INDEX(), trả về danh sách các Hệ thống tương ứng với các số hàng đó.

Cuối cùng, IFERROR() chèn một ô trống bất cứ khi nào INDEX() đưa ra một lỗi khi nó được điền đầy đủ hơn số lượng các giá trị trong danh sách của hàng row_nums.

Tôi đặt công thức này vào hàng 17, vì vậy ROW()-16 bắt đầu danh sách với row_num thứ nhất trong mảng. Vì vậy, bạn nên thay đổi "16" cuối cùng thành một số nhỏ hơn số hàng mà bạn có công thức.


1
2018-03-27 21:31



Oh wow tôi không mong đợi một phản ứng toàn diện và chi tiết như vậy! Thực sự đánh giá cao Bandersnatch này! Tôi sẽ cố gắng này ngày hôm nay hoặc ngày mai và tôi sẽ cho bạn biết làm thế nào tôi nhận được trên .. Cảm ơn một lần nữa cả hai cho giải pháp và giải thích cách thức hoạt động! - Rav
Xin lỗi vì bận tâm nhưng bạn có thể vui lòng cho tôi có bảng tính bạn đã tạo không? - Rav
Tôi đã tải nó lên đây. Hãy cho tôi biết nếu điều này không hoạt động. - Bandersnatch
Không bấm vào nút "Mở", mở sổ làm việc trong Excel Online. Bên cạnh nút "Mở" là ba dấu chấm (...) và bên dưới trình đơn đó là "Tải xuống". Họ không nên quá bí mật về điều đó. :-) - Bandersnatch