Công thức Excel: Trích xuất nhiều kết quả phù hợp thành các cột riêng biệt -

Tóm lược

Để trích xuất nhiều kết quả phù hợp để tách các ô, trong các cột riêng biệt, bạn có thể sử dụng công thức mảng dựa trên INDEX và SMALL. Trong ví dụ được hiển thị, công thức trong F5 là:

(=IFERROR(INDEX(names,SMALL(IF(groups=$E5,ROW(names)-MIN(ROW(names))+1),COLUMNS($E$5:E5))),""))

Đây là công thức mảng và phải được nhập bằng Control + Shift + Enter.

Sau khi bạn nhập công thức vào ô đầu tiên, hãy kéo nó xuống và qua để điền vào các ô khác.

Giải trình

Lưu ý: công thức này sử dụng hai phạm vi được đặt tên: "tên" đề cập đến C5: C11 và "nhóm" đề cập đến B5: B11. Những tên này cũng được xác định trong ảnh chụp màn hình ở trên.

Ý chính của công thức này là: chúng tôi đang sử dụng hàm SMALL để tạo ra một số hàng tương ứng với "trận đấu thứ n". Khi chúng ta có số hàng, chúng ta chỉ cần chuyển nó vào hàm hàm INDEX, hàm này sẽ trả về giá trị tại hàng đó.

Bí quyết là SMALL đang làm việc với một mảng được xây dựng động bởi IF trong bit này:

IF(groups=$E5,ROW(names)-MIN(ROW(names))+1)

Đoạn mã này kiểm tra "nhóm" phạm vi được đặt tên cho giá trị trong E5. Nếu được tìm thấy, nó trả về một số hàng từ một mảng các số hàng tương đối được tạo bằng:

ROW(names)-MIN(ROW(names))+1

Kết quả cuối cùng là một mảng có chứa các số có khớp và FALSE nếu không:

(1; FALSE; FALSE; FALSE; FALSE; 6; FALSE)

Mảng này chuyển thành NHỎ. Giá trị k cho SMALL (thứ n) đến từ một phạm vi mở rộng:

COLUMNS($E$5:E5)

Khi được sao chép trên bảng kết quả, phạm vi sẽ mở rộng, khiến k (thứ n) tăng lên. Hàm SMALL trả về mỗi số hàng phù hợp, được cung cấp cho hàm INDEX dưới dạng row_num, với "tên" phạm vi được đặt tên là mảng.

Xử lý lỗi

Khi COLUMNS trả về giá trị cho k không tồn tại, SMALL sẽ tạo ra lỗi #NUM. Điều này xảy ra sau khi tất cả các trận đấu đã diễn ra. Để loại bỏ lỗi, chúng tôi bọc công thức trong hàm IFERROR để bắt lỗi và trả về một chuỗi trống ("").

thú vị bài viết...